WiX 导航 从注册组件访问 redux store
WiX navigation Access redux store from registered component
我将 WiX 导航与 redux 结合使用。
https://wix.github.io/react-native-navigation/#/usage
在 app.jsx 文件中,我用 redux store 注册了我所有的屏幕:
const createStoreWithMiddleware = applyMiddleware(thunk)(createStore);
const reducer = combineReducers(reducers);
const store = createStoreWithMiddleware(reducer);
registerScreens(store, Provider);
在 registerSceens.js 我绑定了 redux store :
export default (store, Provider) => {
Navigation.registerComponent('aApp.FooComponent', () => FooComponent, store,
Provider);
}
那么在 FooComponent 中,如何轻松访问 redux 存储?
export default class FooComponent extends Component {
constructor(props) {
super(props);
console.log(store); //i need REDUX store
}
您需要使用 react-redux 将 FooComponent
连接到 redux。之后你可以通过道具访问任何东西。
您需要连接您的组件,然后您可以从上下文中获取商店,如下所示:
class FooComponent extends Component {
static contextTypes = {
store: object, // <--- allow this component to access the store
};
componentWillMount(props) {
const { store } = this.context; // <-- Get it!!
console.log(store); //i need REDUX store
}
}
export default connect()(FooComponent);
定义 contextTypes
后,您可以从 this.context
访问商店。
虽然您可以这样做...但问题是...您为什么要这样做? connect
已经允许您访问状态和绑定操作,通常这就是您所需要的。根据经验,让我们的组件尽可能地愚蠢总是一个好主意。
我将 WiX 导航与 redux 结合使用。 https://wix.github.io/react-native-navigation/#/usage
在 app.jsx 文件中,我用 redux store 注册了我所有的屏幕:
const createStoreWithMiddleware = applyMiddleware(thunk)(createStore);
const reducer = combineReducers(reducers);
const store = createStoreWithMiddleware(reducer);
registerScreens(store, Provider);
在 registerSceens.js 我绑定了 redux store :
export default (store, Provider) => {
Navigation.registerComponent('aApp.FooComponent', () => FooComponent, store,
Provider);
}
那么在 FooComponent 中,如何轻松访问 redux 存储?
export default class FooComponent extends Component {
constructor(props) {
super(props);
console.log(store); //i need REDUX store
}
您需要使用 react-redux 将 FooComponent
连接到 redux。之后你可以通过道具访问任何东西。
您需要连接您的组件,然后您可以从上下文中获取商店,如下所示:
class FooComponent extends Component {
static contextTypes = {
store: object, // <--- allow this component to access the store
};
componentWillMount(props) {
const { store } = this.context; // <-- Get it!!
console.log(store); //i need REDUX store
}
}
export default connect()(FooComponent);
定义 contextTypes
后,您可以从 this.context
访问商店。
虽然您可以这样做...但问题是...您为什么要这样做? connect
已经允许您访问状态和绑定操作,通常这就是您所需要的。根据经验,让我们的组件尽可能地愚蠢总是一个好主意。