Не обновляется компонент в react-router v4

503
09 ноября 2017, 07:42

У меня есть некоторый компонент который задан <Route path="/news" component={C}/> и <Route exact path="/news/page/:number/" component={C}/> , если компонент принимает параметр number. Cам компонент:

import { Component } from 'react'
import { Link } from 'react-router-dom'
export class C extends Component{
constructor(props){
    super(props);
    let p;
    if (typeof this.props.match.params.number == "undefined"){
        p = 1;
    }else{
        p = parseInt(this.props.match.params.number);
    }
    this.state = { page: p, news: []};
}
componentWillMount() {
    const setState = this.setState.bind(this);
    const p = this.state.page;
    $.ajax({
        type: "POST",
        url: "news.php",
        data: { page: p},
        success: function(data){
            setState(data);
        },
    });
}
render(){
    let buttons, n;
    let news = this.state.news;
    let pageb = this.state.page-1;
    let pagef = this.state.page+1;
    console.log(pageb);
    console.log(pagef);
    if(news.length > 0){
        n = <div>
            {news.map(function(n, i){
                return (<div class="news-block" key={i}>
                    <Link to={`/news/post/${n.id}/`}><h5>{n.theme}</h5></Link>
                    <small>
                        <Link to={`/user/${n.author}/`}>
                            {n.author}
                        </Link>, {n.date_of_create}
                    </small>
                    <p>{n.about}</p>
                </div>);
            })}
        </div>;
        if(pageb > 0 )
            buttons = <Link to={`/news/page/${pageb}/`} > ← Назад</Link>;
        buttons = <div> {buttons} <Link to={`/news/page/${pagef}/`}>Вперед →</Link></div>;
    }else{
        n = <p>Пока здесь нет новостей! ;)</p>;
    }
    return(
        <div>
            {n}
        <div>{buttons}</div>
    </div>
    );
}
}

При нажимании по <Link>, который ссылает компонент на самого себя но уже с параметрами, компонент не перерисовывается. Что я делаю не так?

READ ALSO
Результат сравнения строки и true [дубликат]

Результат сравнения строки и true [дубликат]

На данный вопрос уже ответили:

288
Небольшое изменение в Function

Небольшое изменение в Function

Всем привет! Только-что возникла одна гениальная идеяНо для этого мне нужно знать:

194
Зачем angular выдаёт такую ошибку?

Зачем angular выдаёт такую ошибку?

Похоже на то, что это бага смэто и это

317