const usersPosts = useSelector(state => {
const { users, searchValue } = state.reducerFetchUsers
if (!searchValue)
return users
return users.filter((user) => user.name.includes(searchValue))
})
const configureStore = history => {
const store = createStore(
rootReducer(history),
composeWithDevTools(
applyMiddleware(routerMiddleware(history), sagaMiddleware, logger)
)
);
sagaMiddleware.run(rootSaga);
return store;
};
const withProductsAndCustomers = Component => {
class ProductsAndCustomers extends React.Component {
// методы
render() {
return <Component {...this.props}/>;
}
}
return connect(mapStateToProps, mapDispatchToProps)(ProductsAndCustomers);
}
const mapStateToProps = state => {
return {
ProductsAndCustomers: state
}
}
const mapDispatchToProps = dispatch => {
return {
onRequestProducts: () => dispatch()
};
}
case INCREMENT_QTY:
const { payload: newItem } = action;
return {
...state,
items: state.items.map(item => {
if(item.id === newItem.id) {
return {
...item,
qty: newItem.qty,
}
}
return item;
})
};
однако я придумал и альтернативное решение: написать функцию (или класс с методами), которая бы имела доступ к store сама по себе. Вызывая эту функцию в любом месте приложения, не приконнекченный компонент будет получать актуальные данные из state.
Откуда в этом коде приходит функция toggleOpen?
const {article, isOpen, toggleOpen} = this.props
case ADD_PRODUCT_TO_CART_SUCCESS:
return {
...state,
entities: {
...state.entities,
[action.payload.productUid]: {
...state.entities[action.payload.productUid],
addedToCart: true,
}
}
}