javascript - 一个组件可以接收两个 HOC 的数据吗?

标签 javascript reactjs

在高阶组件模式中,有没有一种方法可以让单个展示组件从两个 HOC 接收状态?

例如:

const WithUserState = WrappedComponent => {
  return class extends Component {
    state = {
      userData: { userId: 1252748, userName: 'thomas' }
    }
    render() {
      return <WrappedComponent userData={this.state.userData} />
    }
  }
}

const WithCommentState = WrappedComponent => {
  return class extends Component {
    state = {
      userComments: [{id: 0, comment: 'hello'}, {id: 1, comment: 'world'}]
    }
    render() {
      return <WrappedComponent userComments={this.state.userComments} />
    }
  }
}

class UserAndComments extends Component {
  render() {
    return (
      <section>
        <code>user: {JSON.stringify(this.props.userData)}</code>
        <hr />
        <code>comments: {JSON.stringify(this.props.userComments)}</code>
      </section>
    )
  }
}

我听说这是可能的,但我的谷歌搜索没有帮助我。我唯一能想到的可能是嵌套函数调用:

const ComonentWithUserAndComments = WithCommentState(WithUserState(UserAndComments))

这没有用:我只收到 userDatauserComments 是空的。

是否可以从两个 HOC 获取 State 数据?

codesandbox

最佳答案

是的,更新您的 WithUserState 以传递 Prop 。

const WithUserState = WrappedComponent => {
  return class extends Component {
    state = {
      userData: { userId: 1252748, userName: 'thomas' }
    }
    render() {
      return <WrappedComponent {...this.props} userData={this.state.userData} />
    }
  }
}

关于javascript - 一个组件可以接收两个 HOC 的数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48014820/

相关文章:

reactjs - Semantic-ui-react:如何在没有点击/悬停的情况下触发弹出窗口?

reactjs - 如何隐藏react-data-grid中的列

javascript - 图像 slider 过渡未正确循环返回

javascript - 为什么我使用 componentWillReceiveProps 收到此错误?

javascript - 在 webpack 中构建后 ReactJS 不起作用

javascript - 这种 Safari 行为是否违反了 ECMAScript 规范?

node.js - TypeError : crypto__WEBPACK_IMPORTED_MODULE_5__. generateKeyPairSync 不是函数

javascript - 三个 JS - 执行旋转后 BoundingBox 未更新

javascript - 如何下载Mozilla的开发者文档供离线阅读?

javascript - 模板助手和基于 session 的事件