2017-03-29 11 views
0

redux-ormを使用していて、エンティティを追加した後で、myセレクタがmapStateToPropsの新しいオブジェクトで更新されないため、render()が再度呼び出されません。私は、チュートリアルを進めてきたが、私が間違っているのかを見ることができません。データの追加後にmapStateToPropsを呼び出さないRedux-orm

別のコンポーネントがBookReducerを呼び出しているので、私は減速が呼び出されている100%を知っています。ここで

は私の減速である:ここでは

export default function BookReducer(state = initialState, action) { 

    const session = orm.session(state); 

    switch (action.type) { 

     case 'newBook': 

      session.Book.create({ id: 0, type: 'novel' }); 

      //I can see verify that the object has been added to the ORM 
      console.log(session.Book.all().toRefArray()) 
    } 

    return session.state; 
} 

は私のセレクタである:ここでは

import orm from './orm'; 

const BookSelector = createSelector(orm, state => state.orm, session => { 
    return session.Book.all().toRefArray() 
}); 

は私のコンポーネントである:

class Main extends React.Component { 

    constructor(props) { 
     super(props); 
    } 

    render() { 

    console.log("debug") 
    console.log(this.props.books) 

    return (
     <div> 
      {this.props.books} 
     </div> 
    ) 


    function mapStateToProps(state) { 

     return { 
      isOpen: true, 
      books: BookSelector(state) 
     }; 
    } 
} 
+0

をエクスポートしてインポートする必要がMainコンポーネント

import connect from 'react-redux'; class Main extends React.Component { constructor(props) { super(props); } render() { console.log("debug") console.log(this.props.books) return ( <div> {this.props.books} </div> ) } function mapStateToProps(state) { return { isOpen: true, books: BookSelector(state) }; } export default connect(mapStateToProps)(Main); 

外にそれを定義しますが、Reduxのクロムのプラグインをインストールしたことがありますか?あなたはあなたの店で新しい本をあなたの店に正しく持っていることをそれで確認できますか?正しくお店 – guillaumepotier

答えて

2

あなたは主に接続しているようには見えません。 mapStateToPropsに準ずる。 connectexport default connect(mapStateToProps)(Main);などを使用し、また、あなたがBookSelector

import orm from './orm'; 

const BookSelector = createSelector(orm, state => state.orm, session => { 
    return session.Book.all().toRefArray() 
}); 
export default BookSelector; 
+0

こんにちはShubhamで呼び出されていない場合は、問題が(メイン)コンポーネントが接続(mapStateToProps)に接続して、あなたの減速に可能性があり、申し訳ありませんでそれを貼り付けるのを忘れていました。他のアイデア? –

+0

こんにちはランス、示唆したように、あなたのmapStateToProps関数をコンポーネントの外に保ち、あなたのコンポーネントをプロバイダタグにラップしています。 –

+0

hi Shubham、mapStateToPropsはコンポーネントの外にありますが、助けにはなりません。 MapStateToProps状態(非Reduxの-ORM)を変更する他のテストコンポーネントの状態が変化して働いている、それだけでReduxの-ORMからの変更を見ることができません。ルートインデックス.jsはプロバイダのすべてをストアにラップします。 –

関連する問題