Canvas Redux-如何访问异步派生的不可序列化对象?

Canvas Redux-如何访问异步派生的不可序列化对象?,canvas,reactjs,redux,react-redux,Canvas,Reactjs,Redux,React Redux,我的用户提供了一个URL,我想在我的React+Redux应用程序中将该URL用作元素的背景。这意味着我的React组件的render()方法需要访问图像标记的属性是异步的,因为在从服务器获取数据之前,请求的图像实际上不会填充到DOM中 通常,对于异步任务,例如API调用,可以将异步任务的结果直接存储到Redux存储中,但是从读取开始,似乎不建议在存储中存储不可序列化的对象(如DOM节点) 有没有其他合理的方法来解决这个问题?目前,我正在滥用React组件的生命周期方法来监视URL属性的更改,然

我的用户提供了一个URL,我想在我的React+Redux应用程序中将该URL用作
元素的背景。这意味着我的React组件的
render()
方法需要访问图像标记的
属性是异步的,因为在从服务器获取数据之前,请求的图像实际上不会填充到DOM中

通常,对于异步任务,例如API调用,可以将异步任务的结果直接存储到Redux存储中,但是从读取开始,似乎不建议在存储中存储不可序列化的对象(如DOM节点)


有没有其他合理的方法来解决这个问题?目前,我正在滥用React组件的生命周期方法来监视URL属性的更改,然后将
DOM节点异步设置为组件的状态,这感觉非常尴尬。

为什么不将图像URL存储在store/state中,然后将其传递给应用程序

假设您的
url
处于
状态

render(){
var bg=新映像()
bg.src=this.state.url
//这里您使用bg作为元素
}

这样,您就不会将其设置为回调,而是将其设置为对状态更改的反应。

为什么不将图像URL存储在store/state中,然后将其传递给

假设您的
url
处于
状态

render(){
var bg=新映像()
bg.src=this.state.url
//这里您使用bg作为元素
}

这样,您就不会将其设置为回调,而是将其设置为对状态更改的反应。

那么用户输入一个URL,您想存储BLOB吗?您如何设置背景?@martriay我想将用户提供的图像绘制到画布中。我不知道你说的“斑点”是什么意思。为了更加清晰,我希望长期使用
节点,这样我就可以在道具更改时重新绘制
,始终使用用户的URL作为背景。因此,用户输入一个URL,您想存储BLOB吗?您如何设置背景?@martriay我想将用户提供的图像绘制到画布中。我不知道你说的“斑点”是什么意思。为了更清楚,我希望长期使用
节点,以便在道具更改时重新绘制
,始终使用用户的URL作为背景。不幸的是,在触发“加载”事件之前,您无法可靠地使用
bg
。如果您尝试立即使用它,它仍将是空的,因为图像尚未下载。请参阅此答案以了解更多上下文:您是对的。我认为没有其他选择,只能将DOM元素存储在存储中,并通过观察
isReady
变量或类似变量来等待图像加载。不幸的是,在触发“加载”事件之前,您无法可靠地使用
bg
。如果您尝试立即使用它,它仍将是空的,因为图像尚未下载。请参阅此答案以了解更多上下文:您是对的。我认为没有其他选择,只能将DOM元素存储在存储中,并通过观察
isReady
变量或类似变量来等待图像加载。