2017-01-15 23 views
0

私は何を私がcurrentMenuでやりたいことはcategory_idmenuItemsを保存することであるコンポーネントの状態を反応で置き換えるにはどうすればよいですか?

_renderMenuItems(menuitems) { 
    const { order } = this.props; 

    return menuitems.map((menuitem) => { 
     if (menuitem.category_id == this.props.order.currentCategoryId) { 
       this.state.currentMenu.push(menuitem) 

     else { 
      return false; 
     } 

     return <MenuItem 
       key={menuitem.id} 
       order={order} 
       dispatch={this.props.dispatch} 
       channel={this.props.order.channel} 
       {...menuitem} />; 
    }); 
} 

、以下のような機能_renderMenuItemを使用してmenu_itemsをレンダリングMenuItemContainer

export default class MenuItemsContainer extends React.Component { 
constructor() { 
    super(); 
    this.state = { 
    currentMenu: [], 
    }; 
} 

の構成要素にcurrentMenuの局所的な状態を持っていますmenuItemは、注文状態のcurrentCategoryIdに等しい。

今はpush(menuitem)を使用して、これらのアイテムを状態にプッシュします。ただし、currentMenuでは、menuItemのcategory_idがcurrentCategoryIdと等しい場合にのみ格納する必要があります。したがって、currentCategoryIdの変更がある場合は、リセットする必要があります。currentMenumenuItem

どうすればいいですか?事前

答えて

0

で おかげで、実際にあなたがそうのようなあなたの_renderMenuItems方法の終わりにSETSTATEコマンドを追加することができますが、SETSTATE を経由して、これを行うために必要な状態変化をトリガーするために:

this.setState({currentMenu: state.currentMenu}) 

しかし、より適切な方法は、状態に既に適切な項目が含まれていて、それをレンダリングメソッドでフィルタリングしないことです。あなたの例から

イムわからないあなたがメニューアイテムを取得しているが、理論的にはあなたがそれらから状態を構築し、_renderMenuItemsメソッドを呼び出す必要がありますか(つまり、使用する状態)

+0

私が使用しています 'フェニックスフレームワーク'。ユーザーがチャンネルに参加すると、すべての 'menu_item'が状態に渡されます。減速機で照会することは可能ですか? 'currentMenu'のために。例えば、私はすべての 'menu_items'を注文状態にしていますので、私がreducerの' category_id'で問い合わせることができるのは、 'currentMenu'を取得する最良の方法です。 –

+0

phoenixフレームワークに慣れていません。あなたはここでレフィックスを使用していますか?それはどのように状態に設定されますか?理論的には、状態に設定すると、componentDidUpdateを使用して要素をフィルタリングできます – Kinnza

関連する問題