Вопрос по reactjs, redux, react-redux – github.com/reactjs/react-redux/issues/...

10

я есть один компонентApp.js где я пытаюсь сохранить состояние, используяredux, В index.js, где я установил хранилище только для<App /> составная часть.

index.js

let store = createStore(scoreReducer);

ReactDOM.render(
  <Provider store={store}><App /></Provider>,
  document.getElementById("root")
);
registerServiceWorker();

У меня есть этот метод вApp.js сопоставить состояние с реквизитом, который доступен внутриApp.js.

App.js

function mapStateToProps(state) {
  return { score: state.score, status: state.status };
}

Пока все хорошо, теперь я не уверен, как получить доступ{ this.props.score} в другой компонент?

Какие изменения мне нужно сделать вindex.js и второй компонент, если я хочу получить доступ{this.props.score} в другой компонент?

Ваш Ответ

2   ответа
12

являющийся дочерним по отношению к Компоненту высшего порядка Провайдера, может получить доступ к свойствам магазина, хотя использованиеconnect функция.

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

function mapStateToProps(state) {
  return { score: state.score, status: state.status };
}

export default connect(mapStateToProps)(MyComponent)

Однако, если этот другой компонент является прямым потомкомApp компонент, то вы также можете передатьscore prop какprop к этому компоненту из приложения, как

<MyComponent score={this.props.score}/>
Не уверен, как вы его используете. Но, конечно, вышеуказанный метод - это путь Shubham Khatri
Можете ли вы предложить, как добавить несколько детей изProvider ? N Sharma
просто визуализируйте компонент внутри компонента провайдера <Provider store = {store}> <App /> <MyComponent /> </ Provider>, Shubham Khatri
Можем ли мы получить доступ к магазину, какcontext.store ? я получаюLine 94: 'context' is not defined no-undef let store = context.store; N Sharma
Поздравляю, этот ответ лучше, чем каждый учебник и официальная документация, которую я читал по реагиру-редукции. Включая быстрый старт, который совершенно бесполезен. sudo
4

Provider Компонент устанавливает контекст для всех своих дочерних элементов, предоставляя хранилище в нем. при использовании компонента высокого порядка (HOC)connect Вы можете обернуть любой компонент и получить доступ к магазину через предоставленныйmapStateToProps а такжеmapStateToProps независимо от того, насколько они вложены. Вы также можете получить доступ к магазину, используя контекстcontext.store но это не рекомендуется. Используя функции карты иconnect, похоже на то, что у вас есть сApp компонент, это лучший подход.

Вы объявили contextTypes? посмотрите на эту темуgithub.com/reactjs/react-redux/issues/... Dayan Moreno Leon
Я пробовал какrender() { let store = context.store; но я получаю ошибкуLine 94: 'context' is not defined no-undef N Sharma
в вашем компоненте вам нужно объявить contextTypes, и если вы используете компоненты на основе классов, это будет this.context Dayan Moreno Leon
let store = this.context.store; console.log(store); Я получаю неопределенный на консоли N Sharma

Похожие вопросы