我正在尝试从 mixins 重构为 HOC,以便我可以升级到最新的 React(我目前正在使用 React 13/ES5)。当我的组件加载时,mixin 能够访问一个this.data
具有query
路由属性的数据对象。
React.createClass({
mixins: [myMixin],
data: {
query: "/api/foo"
},
componentDidUpdate(): function(){
}
...
}
在componentDidMount
mixin 内部,它将查询该路由,取回数据并将其置于状态。
var myMixin = React.createClass({
componentDidMount(): function(){
this.fetchData(this.data.query)
}
fetchData(query) {
// fetch the data
}
...
}
这从我的组件中提取了很多样板。我不必componentDidMount
在每个组件上运行 a,只需拥有data
对象即可。
我把这个 mixin 分散在整个项目中。它实际上做的远不止这些,但我只是想把它简化一下,例如起见。
HOC 进来了。我把所有的东西都拿出来data
放进去getInitialState
。现在我已经data
了解了现在包装的组件的状态,我该如何访问它?和我的 mixin 一样,我希望我的 HOC 能够处理我的componentDidMount
、访问data.query
和获取数据。我不想必须重写每个组件才能拥有componentDidMount
.
PS-我通常使用最新版本的 React 和 ES6,如果有人能告诉我为什么 mixin 可以做this.data
而我的组件不能,那将非常有帮助。在最新版本的 React 中,你不能定义除此之外的对象render()
。