2016-10-20 5 views
0

状態変更後に反応ルータでルートをリダイレクトするときに問題が発生しました。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に引数をオーバーライドする

答えて

1

は、このように、本来の機能は関係なく、あなたがそれを与えるどのような引数、list._idで呼び出されなかっます。

あなたは、単に引数を結合することなくダウンselectedList機能を渡すことによって、これを修正した後、ちょうどListコンポーネントでlist._idでそれを呼び出すことができます。

<List 
    selectList = {this.props.selectList} 
    ... 

そしてListコンポーネント

<ListGroupItem 
    onClick={() => this.props.selectList(list._id)} 
    ... 

deleteThisListに渡されたnull関数は、p適切に尻を踏んだ。

+0

ありがとう、それは本当に良い仕事! :Dちょうど追加する(this.props.selectedItemId === this.props.list._id)? \t \t \t \t \t this.props.selectList(「」):除去項目が選択されない場合は、削除機能でthis.props.selectList(this.props.selectedItemId)がアクティブな項目を維持します。 – guillaumek

関連する問題