Reactjs创建了一个提供程序组件,将Redux传递给它的子组件



我想知道是否有可能为子封装器创建一个父封装器,它将自动将redux存储的一部分传递给它的子封装器。

例子
<ReducProvider src="user">
  <ul> {this.props.data.map(f=><li>{f.name}</li>)} </ul>
</ReducProvider>

这里我想让这个ul用props来渲染。data = ReduxProvider传递给它的数据

我知道我可以简单地得到我需要的部分使用连接像这样

connect( (state,prop)=>({data:state[prop.src]}) )(ReduxProvider)

,但有时我不希望父听存储的变化,我也不希望孩子知道这些数据是从哪里来的,所以我计划为每个减速器创建一个提供者我有。这样,当存储发生变化时,只有这些提供者会得到更新。

虽然这不是你问题的答案,但这可能会解决你的问题。

可以创建无意义的代理组件。这些组件呈现实际的组件,并将正确的变量作为道具传递。我记得曾经读到过,您可以自动生成这样的组件。

ES6中该组件的示例:

import React from 'react';
import { connect } from 'react-redux';
import User from './User';
class AuthenticatedUser extends React.Component {
    render() {
        return <User user={this.props.user} />
    }
}
export default connect(
    (state) => ({ user: state.Authentication.user }),
    (dispatch) => {}
)(AuthenticatedUser);

!代码未测试
因此这段代码将把身份验证的用户从状态注入到User组件中。保持User组件干净,即您可以从任何来源呈现任何用户。虽然您还创建了一个选项来呈现用户的连接版本,该版本自动链接到商店。

实际问题的答案:
我不建议这样做,因为上下文是一个彻头彻尾的坏习惯。但是你可以把变量存储在上下文中。当请求使用contextTypes属性时,子节点可以访问这些变量。

相关内容

  • 没有找到相关文章

最新更新