我的用户提供了一个URL,我想使用这个URL作为我的React+Redux app.This中的<canvas>
元素的背景,这意味着我的React组件的render()
方法需要访问包含用户图像的<img>
DOM节点。不幸的是,设置图像标记的src
属性是异步的,因为在从服务器获取数据之前,请求的图像实际上不会填充到DOM中。
通常,对于异步任务,例如API调用,人们会将异步任务的结果直接存储到Redux存储中,但从读取Redux docs来看,似乎不建议在存储中存储不可序列化的对象(如DOM节点)。
有没有其他合理的方法来解决这个问题?目前,我正在滥用React组件的生命周期方法来监视URL prop的变化,然后异步地将<img>
DOM节点设置为组件的状态,这感觉非常尴尬。
发布于 2016-08-29 11:32:14
为什么不将图像URL存储在store/state中,并将其传递给Image
constructor
假设您在state
中有url
render() {
var bg = new Image()
bg.src = this.state.url
// here you use the bg as an <img> element
}
这样,您不会将其设置为回调,而是将其设置为对状态更改的反应。
https://stackoverflow.com/questions/39197868
复制相似问题