Redux-orm не вызывает mapStateToProps после добавления данных
Я играю с redux-orm, и после добавления сущности мой селектор не обновляется новыми объектами в mapStateToProps, в результате чего render() больше не вызывается. Я прошел уроки, но не вижу, что я делаю неправильно:
Другой компонент вызывает 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)
};
}
}
1 ответ
Вы, кажется, не связали Главный компонент с 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;