Redux-orm在添加数据后不调用mapStateToProps

时间:2017-03-29 13:51:15

标签: reactjs redux react-redux redux-orm

我正在使用redux-orm并且在添加实体后,我的选择器没有使用mapStateToProps中的新对象进行更新,因此导致render()不再被调用。我已经阅读了这些教程,但看不出我做错了什么:

另一个组件是调用BookReducer,所以我知道100%正在调用reducer。

这是我的减速机:

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)
       };
    }
}

这是我的组件:

{{1}}

1 个答案:

答案 0 :(得分:2)

您似乎没有将主要组件与mapStateToProps相关联。使用connect之类的export default connect(mapStateToProps)(Main);并在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);

您还需要导出和导入BookSelector

import orm from './orm';

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