我正在使用Ramda构建一个反应应用程序。当页面加载时,我想加载一些数据并将其置于我的状态,所以它看起来像这样:
{
"datasets": [foo, bar]
}
所以我使用了componentDidMount方法来实现这一点。
componentDidMount() {
fetch('/api/dataset/')
.then(res => res.json())
.then(datasets => this.setState(R.assoc('datasets', datasets)))
}
这很有效,但后来我觉得我可以使用R.compose
使它更光滑componentDidMount() {
fetch('/api/dataset/')
.then(res => res.json())
.then(R.compose(this.setState, R.assoc('datasets')))
}
这不起作用,它给了我错误:
TypeError: Cannot read property 'enqueueSetState' of undefined
at r.setState (ReactBaseClasses.js:62)
at _pipe.js:3
at _arity.js:14
at <anonymous>
为什么会这样?它与“this”的绑定有关吗?
答案 0 :(得分:2)
在constructor
方法
constructor () {
super();
this.setState.bind(this);
}