Действие - это просто объект со строковым значением с именем type
. Любые другие свойства этого объекта также будут переданы, поэтому вы используете это для передачи набранного текста.
Если вы используете функцию для создания своих действий, что-то вроде:
export function accountNumberSearch(accountNumber) {
return { type: 'ACCOUNT_SEARCH', accountNumber };
}
Тогда в вашем редукторе вы сможете присвоить значение в состоянии action.accountNumber.
AccountNumberSearch : {
...state.AccountNumberSearch,
AccountNumber : action.accountNumber,
}
Затем вы можете сопоставить свое состояние с реквизитом, как обычно (как вы делали для переключения боковой панели).
Кроме того, вы должны обратить внимание на модульность ваших редукторов с помощью combineReducers
- Docs
Это было бы намного проще, чем то, как вы это делаете.
РЕДАКТИРОВАТЬ: Обработка изменений
Прежде всего, вы хотите подключить поле ввода для окна поиска к слушателю onChange. Если вы сделаете это как onChange={this.onSearchChange}
, вы можете получить значение из event
в функции:
onSearchChange = event => {
this.props.AccountNumberSearch(event.target.value);
}
Затем в mapDispatchToProps
вы отправите свое действие + переданное значение для отправки:
const mapDispatchToProps = dispatch => {
return {
AccountNumberSearch: AccountNumber => dispatch(importedActions.AccountNumberSearch(AccountNumber)),
}
}
Затем в компоненте, который вы хотите ПОЛУЧИТЬ это значение, вы должны сопоставить состояние редукса с реквизитом, например:
const mapStateToProps = state => {
return {
AccountNumber: state.AccountNumberSearch.AccountNumber,
}
}
Затем вы можете получить доступ к этому значению в вашей функции рендеринга, вызвав this.props.AccountNumber
.
Если вам нужно что-то сделать при изменении этого значения, вы всегда можете прослушать componentDidUpdate
и сравнить значение со старым - если оно изменилось, вызвать любую функцию, которую вам нужно сделать.