问题是:
我有一个全局变量(在componentA定义之外),其名称为:字符串为例,我需要赋值后,从后端取得它在useEffect [],并使用它之前,该组件被导出,但当时的变量是未定义的,有什么办法可以做到这一点或类似的事情?
这是一个代码示例
import React from 'react'
let name: string
const ComponentA = () => {
useEffect(() => {
fetchName()
}, [])
const fechName = async () => {
const _name = await backendService.getName()
name = _name
}
return (
<>Anything</>
)
}
console.log("name: ", name) // getting undefined
export default ComponentA
编辑:问题是,我正在实现Codepush,并且必须在导出组件时应用,如下所示:export default CodePush({option: name})(ComponentA)
,所以我想动态设置选项属性,从后端获取它
2条答案
按热度按时间carvr3hs1#
看起来像是将
name
赋值给它自己,但由于它是undefined
,因此将始终保持未定义状态。编辑:顺便说一句,即使进行了此更改,您仍然会在console.log中看到
undefined
,因为console.log语句是在fetchName
函数中的name变量赋值之前执行的。请尝试在name
赋值之后将console.log移到fetchName
中。laawzig22#
看起来像是XY problem,重点应该是如何动态创建组件,您可以执行以下操作:
返回的组件可能需要
useMemo
以避免重新获取太多次