私は反応ビュー/wiki/:artical
を持っています。別の見解をwikiに(例えば/
から/wiki/some-artiacal
へ)移動すると私のビューは更新されますが、あるウィキから別のウィキに移動すると(例えば/wiki/some-artiacal
〜/wiki/some-other-artiacal
)、ページは新しいコンテンツに再レンダリングされません。 Reactはそれらを同じビューとして見て、ページを再レンダリングしないようです。ブラウザを手動でリフレッシュすると記事が更新されますが、<Link to='/wiki/some-other-artiacal'></Link>
をクリックすると反応するようになります。URL Paramを使用しないReact Routeビューを更新しない
import React from "react";
import ReactDOM from "react-dom";
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
// COMPONENTS
import Header from './components/Header';
// VIEWS
import HomePage from './views/HomePage';
import WikiPage from './views/WikiPage';
import ProblemTesterPage from './views/ProblemTesterPage';
import NoMatchPage from './views/NoMatchPage';
ReactDOM.render(
<Router>
<div className='container-fluid'>
<div className='row justify-content-center'>
<div className='col-xs-12 col-lg-8'>
<Header/>
<div className='card'>
<div className='card-body'>
<Switch>
<Route exact={true} path='/' component={HomePage}></Route>
<Route exact={true} path='/wiki/:artical' component={WikiPage}></Route>
<Route exact={true} path='/tools/problem-tester' component={ProblemTesterPage}></Route>
<Route component={NoMatchPage}/>
</Switch>
</div>
</div>
<p className='footer text-center text-secondary'>©2017 MathBrainius</p>
</div>
</div>
</div>
</Router>
, document.getElementById('app'));
ウィキコンポーネント::
import React from 'react';
import ReactMarkdown from 'react-markdown';
export default class HomePage extends React.Component {
constructor(props) {
super(props);
this.state = {
artical: ''
};
}
componentDidMount() {
var s = this;
var props = s.props;
axios.get(`/api/wiki/${props.match.params.artical}`, {
timeout: 20000,
})
.then(res => {
var ping = res.data;
s.setState({
artical: ping.artical
});
});
}
render() {
var s = this;
return (
<div>
<ReactMarkdown source={s.state.artical}/>
</div>
)
}
}
私は
は、ルーターファイルに反応します新しい 'props.match.params.artical'を取得するために' componentWillReceiveProps'を使う必要があると思います。 – bennygenel