状態変更後に反応ルータでルートをリダイレクトするときに問題が発生しました。Meteor/React、changeout後のルートリダイレクト
実際には、状態(currentListId)を変更するクリックイベントを使用しているときに私のルートが動作していますが、Id(listId)で要素を削除したときに動作しませんので、setState(listSelected: ")... 私のルートには/ idlistselectedが表示され、/にリダイレクトされます。ここで
はいくつかのコードです:
ページコード:
constructor(props) {
super(props);
this.state = { listSelected: "" };
this.selectList = this.selectList.bind(this);
}
selectList(listId) {
this.setState({ listSelected: listId });
// Here, only the if listId Works
if (listId)
browserHistory.push('/admin/todos/' + listId);
else
browserHistory.push('/admin/todos/');
}
render() {
return (
<ListPanel
listSelected = {this.state.listSelected}
selectList = {this.selectList}
lists = {this.props.lists}
tasks = {this.props.tasks}
/>
その後ListPanel:
renderLists() {
return this.props.lists.map((list) => (
<List
selectedItemId ={this.props.listSelected}
selectList = {() => this.props.selectList(list._id)}
key = {list._id}
list = {list}
countPendingTasks = {this.countPendingTasks(list._id)}
/>
));
}
そして最後リスト:
deleteThisList() {
Meteor.call('lists.remove', this.props.list._id, (err) => {
if (!err) {
this.props.selectList(null);
}
});
}
render() {
return (
<ListGroupItem
className={(this.props.list._id == this.props.selectedItemId) ? 'active' : ''}
onClick={this.props.selectList}
>
{this.props.list.name}
<Glyphicon className="pushRight red"onClick={() => this.deleteThisList()}/>
</ListGroupItem>
);
}
私はSelectListの中listIdを表示する場合、私はリストを削除するとき、私は過去のIDを持っている..私は私が削除機能ではnullに設定する理由は原因を見つけることができません...
感謝助けを求めてあなたは子コンポーネントにthis.props.selectList
を呼び出す場合は、List
コンポーネントにそれを渡しているときは、selectList
に引数をオーバーライドする
ありがとう、それは本当に良い仕事! :Dちょうど追加する(this.props.selectedItemId === this.props.list._id)? \t \t \t \t \t this.props.selectList(「」):除去項目が選択されない場合は、削除機能でthis.props.selectList(this.props.selectedItemId)がアクティブな項目を維持します。 – guillaumek