我想传递一个变量到一个函数是在className属性(不是其他任何地方)
一旦读取了特定的jsx部分,该函数就会运行(在组件函数之后,在挂载之前)。
作为副作用,此函数返回className的字符串。
然后我希望相同的函数在所有组件安装后运行=useEffect(() => { //here },[]
具有相同的变量
const run = (val: any) => val
useEffect(() => {
const val = run()
console.log(val); // return 'go'
}, [])
return (
<>
<button className={ run('go') }>
run
</button>
</>
)
您不了解什么是className角色以及如何使用它。你没有传递一个函数给className,而是一个CSS类名,它将定义元素的样式。
如果我理解正确的话,您希望run()
函数在每次组件渲染时自动运行,并使用特定的输入'go'
。
你可以这样编辑useEffect钩子:
const run = (val: any) => val
useEffect(() => {
const val = run('go')
console.log(val); // return 'go'
}, [])
return (
<>
<button>
run
</button>
</>
)
另一个选项是,例如,通过按钮的onClick事件调用函数,像这样:
return (
<>
<button onClick={ run('go') }>
run
</button>
</>
)
这样,每次函数呈现时都会触发run
函数。
您还必须删除useEffect
钩子,因为它将在没有任何输入的情况下触发每个渲染上的函数,这不是您所要求的。