我正在使用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}}
答案 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;