我componentDidUpdate()过去曾经使用它并且按预期工作.
然而,这一次,我做到了
componentDidUpdate(prevProps, prevState) {
if (prevState.object.someString !== this.state.object.someString) {
console.log(true);
}
}
Run Code Online (Sandbox Code Playgroud)
并且true从不记录.我将两个状态对象记录到控制台,发现它们完全相同:当前状态.
这是一个错误吗?我在这里错过了什么?
谢谢.
编辑:我尝试用同样的东西componentWillUpdate(nextProps, nextState)再做一次,它们是同一个对象.
编辑2:我正在改变状态:
modifyObject = (field, value) => {
const { object } = this.state;
object[field] = value;
this.setState({ object });
}
Run Code Online (Sandbox Code Playgroud) 所以我有一个Firebase云功能,可以调用2个异步功能.
exports.someFunction = functions.firestore
.document('some/path')
.onCreate(event => {
asyncFunction1();
asyncFunction2();
});
Run Code Online (Sandbox Code Playgroud)
asyncFunction1和asyncFunction2都返回一个promise.
现在,Firebase决定我们应该这样做
通过返回JavaScript承诺来解析执行异步处理的函数(也称为"后台函数").
但是,由于我的函数正在执行两个异步进程,我应该返回什么?我试过了
exports.someFunction = functions.firestore
.document('some/path')
.onCreate(event => {
return Promise.all(
asyncFunction1(),
asyncFunction2()
);
});
Run Code Online (Sandbox Code Playgroud)
这有效:两个函数都被正确调用和执行,但我TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined at Function.all在调用Cloud函数时也会收到错误.
有任何想法吗?提前致谢.
javascript firebase google-cloud-functions google-cloud-firestore