#reactjs #redux #redux-saga
#reactjs #redux #redux-сага
Вопрос:
Мое приложение содержит два компонента,
- ListComponent(родительский), который содержит список пользователей,
- Пользовательский компонент (дочерний), который отображает информацию о пользователе
Страница списка пользователей:
<ListComponent
data={this.props.users}
renderItem={(item) => <UserComponent user={item} />}
/>
Страница пользователя:
render(){
let { user, followers } = this.props;
user = {
...user,
...followers
}
return (
<div>
<span>{user.totalFollowers}</span>
<button onClick={() => reduxHelper(user.totalFollowers 1)}></button>
</div>)
}
Состояние в реквизит:
mapStatetoProps = (state) => ({
followers: state.user.followers
})
Редуктор:
initial_state = {
followers: {}
}
После успеха:
followers: {
totalFollowers: action.totalFollowers
}
Я использую состояние redux для хранения списка пользователей, когда пользователь (пользователь устройства) нажимает на значок пользователя, который отправляет пользовательские реквизиты в UserComponent, там я показываю информацию о пользователе. Если пользователь (пользователь устройства) нажимает на кнопку «Следовать», а затем обновляет информацию о бэкэнде и профиле пользователя с помощью redux amp; redux-saga.
- Из приведенного выше кода невозможно обновить пользовательские данные глобально (состояние Redux)
- Или я могу обновить весь список?
- Я следую правильному подходу?
Ответ №1:
Два способа решения таких общих проблем.
- Из родительского компонента отправьте метод в качестве поддержки дочернему компоненту. Внутри этого метода отправка действия для обновления хранилища .. и т.д. Внутри дочернего компонента, например
<div onClick={()=>this.props.methodFromParent(send some data if needed)}
внутри родительского перехватите этот метод и обновите хранилище .. пример
<ChildComponent methodFromParent={(someData)=>this.methodFromParent(someData)}
.. Теперь внутри methodFromParent обновите хранилищеmethodFromParent = ()=>{this.props.dispatch(whatever workflow u r using)}
- Сформируйте сам дочерний компонент .. используя
store.dispatch()
so, сначала импортируйте хранилище внутри дочернего компонента, затем вы можете использоватьsotre.dispatch(someaction)
. Но этот подход не очень хорош.. вы должны настроить свой проект в соответствии с вышеупомянутым подходом. И используйте ихstore.dispatch(), store.getState()
. В случае чрезвычайной ситуации, когда у вас нет доступа к mapStateToProps и т. Д.