Я знаю, что мой вопрос связан с неправильным пониманием response-redux, но я опишу свой вариант использования, надеясь, что кто-нибудь укажет мне правильное направление.
Я пытаюсь сохранить выбранные ключи строк (selectedRowKeys)из таблицы (муравейник стол) внутри магазина редукса.Все работает, когда структура хранилища проста:
selectedRowKeys: []
Но я хочу сохранить это состояние в нормализованной форме для обработки нескольких таблиц и свойств нескольких таблиц:
tables: {
123fdfas-234dasf-234asdf-23rfa : { //table id
id: 123fdfas-234dasf-234asdf-23rfa,
selectedRowKesy: []
//... other properities
}
}
проблема в том, что это состояние не существует, когда приставка пытается mapStateToProps, как это:
const mapStateToProps = (state, ownProps) => {
if (!ownProps.id) {
ownProps.id = uuidv4();
}
return {
selectedRowKeys: state.tables[ownProps.id].selectRowKeys
};
};
state.tables[ownProps.id]
не определено, поэтому есть ошибка.
Я подумал, что мне нужнокак-то инициализировать состояние, но это привело меня к еще большему замешательству.Что я понял до сих пор:
- Я не могу инициализировать состояние в редукторе, как
reducerName (state = initialState, action)
, потому что действие не отправлено, и нет action.id
(объект действия имеет полезную нагрузку с идентификатором таблицы). - Я не могу отправить действие
INIT_TABLE
в componentDidMount()
, потому что mapStateToProps выполняется первым, поэтому state.tables[ownProps.id]
все еще не определено.
Мне кажется, что этот вариант использованиястранно, и поэтому я не могу найти решение, хотя я гуглю и думаю об этом в течение 3 дней.
Пожалуйста, ведите меня, я нахожусь в сумасшедшем цикле :)
Этомой первый ТАК вопрос, пожалуйста, дайте мне знать, если что-то неясно.