Как я могу использовать React 16.3 Context провайдера с избыточным хранилищем? - PullRequest
0 голосов
/ 04 мая 2018

Я работаю в кодовой базе, в которой уже есть куча излишков, работающих для управления и сохранения состояния, а также для диспетчеризации действий. Моя цель нового контекста API, чтобы избавиться от опоры бурения, что я должен сделать, чтобы доставить все эти части государства к различным компонентам, но сохранить существующий код для управления состоянием в Redux.

Теперь я удалил избыточный код сверления реквизита и заменил их провайдерами и потребителями контекста, подключив их в моих компонентах во всех нужных местах. Я по-прежнему отправляю действия по редукции и получаю ответы API, заполняющие мое хранилище редуксов, и я хочу как-то уведомить контексты, чтобы они обновлялись при обновлении определенных частей хранилища редуксов.

Как мне получать обновления из магазина редуксов, доставленные моим различным провайдерам?

1 Ответ

0 голосов
/ 04 мая 2018

Поскольку вы используете новый Context Api, вы можете легко connect компонент, который использует Context Provider с избыточным хранилищем, и обновлять значения контекста, например

const Context = React.createContext();
class App extends React.Component {
   state = {
       user: ''
   }
   static getDerivedStateFromProps(nextProps, prevState) {
       if(nextProps.user !== prevState.user) {
          return {user: nextProps.user}
       }
       return null;
   }
   render() {
       return <Context.Provider value={this.state.user}>
           <MyComponent />
       </Context.Provider>
   }
}
const mapStateToProps(state) {
   return {
      user: state.user
   }
}
export default connect(mapStateToProps)(App);
...