Я делаю что-то подобное для своего компонента пользовательского интерфейса в приложении React Redux:
// Outer.js
import Inner from './path'
export const Outer = () => {
return (
<div>
...
<Inner />
...
</div>
)
}
// Inner.js
const param = ''
export const Inner = () => {
return (
<div>
<TextField
input={param}
onChange = {(param) => {
Function(param)
}}
/>
</div>
)
}
Я также настроил компонент контейнера для Outer. js:
// OuterContainer.js
import Outer from './path'
const mapStateToProps = (state) => {
paramToBeUpdated: ???
}
const mapDispatchToProps = (dispatch) => {
Function: (param) => dispatch(Function(param))
}
export default connect(mapStateToProps, mapDispatchToProps)(Outer)
Мое действие создано для этого шага:
action/index.js
export const Function = (param) => (dispatch, getState) => {
dispatch({ type: 'FUNCTION', param })
}
И мой редуктор включал следующую функцию:
// reducer.js
export default reducer = (state="", action) => {
switch(action.type) {
case 'FUNCTION':
return {
...state,
param: action.param
}
...
}
}
Я пытаюсь обновить переменную paramToBeUpdated
' s значение из внутреннего компонента пользовательского интерфейса. Но это не сработало.
Могут ли компоненты Inner
и Outer
совместно использовать компонент-контейнер, связанный с Outer
?
Как мне сделать это, не внося слишком много изменений в мои текущая настройка? Можно ли избежать создания нового внутреннего контейнера, который по сути будет копией внешнего контейнера?