Я использую mapStateToProps, mapDispatchToProps для передачи функции и состояния в myComponent, я могу получить функцию, но не могу получить состояние. Мой код выглядит так:
const mapStateToProps = (state) => ({
...state.editor
});
const mapDispatchToProps = (dispatch) => ({
onLoad: (payload) => dispatch(actionCreators.myFunc(payload)),}
});
function myComponent({errors, match, onLoad}) {
//function myComponent({errors, match, onLoad, state}) { //state undefined
//function myComponent({errors, match, onLoad}, state) { //state undefined
// How do I get state here?
console.info(state) //always undefined
console.info(state.editor) //undefined
console.info(editor) //undefined
}
export default connect(mapStateToProps, mapDispatchToProps)(myComponent);
это просто упрощенный пример. Я не могу удалить уничтожение :(, потому что это будет тормозить весь остальной код. Поэтому мне нужно как-то сделать это с уничтожением, если это возможно.
Вам не нужно полностью удалять деструктурирование, просто вместо этого переместите его внутрь функции, чтобы вы могли посмотреть, какие реквизиты вы получаете. В противном случае отладка будет намного сложнее.
Измените свой mapStateToProps
, как показано ниже
const mapStateToProps = (state) => ({
editor:state.editor
});
Типичный пример для Functional component
:
function YourComponent({ yourProp }) {
return <p>{yourProp}</p>
}
function mapStateToProps(state) {
return { yourProp: state.yourProp };
}
export default connect(mapStateToProps)(YourComponent);
Хотели
(state) => ({ editor: state.editor })
? Прямо сейчас вы распаковываете все, что внутриstate.editor
, чтобы разделить реквизит. Также обратите внимание, что имя этого реквизита будетeditor
, а неstate
— удалите деструктуризацию в списке параметров функции,console.info(props)
и посмотрите, что вы получаете.