反応ルーターで発生しているトリッキーなエラーを見つけようとしています。何らかの理由で、最上位のページ ルートで子コンポーネントの 1 つの状態を設定すると、次のエラーが発生します。
Uncaught Error: Invariant Violation: Missing "userId" parameter for path "/user/:userId"
このエラーは、そのパスに移動しているかどうかに関係なく発生します。私のルートは次のようになります。
var routes = (
<Routes>
<DefaultRoute handler={LoginPage} />
<Route name="login" handler={LoginPage} />
<Route name="home" handler={HomePage} />
<Route name="category" path="/category/:category" handler={CategoriesPage}/>
<Route name="profile" path="/user/:userId" handler={ProfilePage}/>
</Routes>
);
そして、私の ajax 呼び出しは次のようになります。
var Feed = React.createClass({
getInitialState: function() {
return { feedItems: [] };
},
componentDidMount: function() {
$.ajax({
url: '/api/transactions',
dataType: 'json',
success: function(transactions) {
this.setState({ feedItems: transactions });
}.bind(this),
error: function(xhr, status, err) {
console.error(this.props.url, status, err.toString());
}.bind(this)
});
},
....
このフィードは、HomePage と ProfilePage を含む一連のページで生成されます。:userId パラメーターがフィード内の Ajax 呼び出しにどのように関連している可能性があるかを理解するのに非常に苦労していますが、スタック トレースが私を導きます。ここで何が起こっているかについての助けをいただければ幸いです。
更新: 問題が見つかりました。私の mongo データベースは古かった (モデル スキーマが変更された) ため、多くの問題が発生し、この不変違反が発生しました。この 2 つがどのように関連していたのかはまだ完全にはわかりませんが、古いオブジェクトを削除すると問題が解決しました。