Javascript 将钩子作为支撑物传递
将反应钩作为支柱传递到另一个部件是否可以接受/常见?Javascript 将钩子作为支撑物传递,javascript,reactjs,Javascript,Reactjs,将反应钩作为支柱传递到另一个部件是否可以接受/常见? 还是说它们只属于声明的组件? 以下只是一个示例,说明我将其作为 从父组件到子父组件的道具 import React, { useState } from 'react'; export const Parent = () => { const [count, setCount] = useState(0); return <div> Current count is {count} <Ch
还是说它们只属于声明的组件?
以下只是一个示例,说明我将其作为
从父组件到子父组件的道具
import React, { useState } from 'react';
export const Parent = () => {
const [count, setCount] = useState(0);
return <div>
Current count is {count}
<Child setCount={setCount} /> // passing a hook set call as a prop to child
</div>
}
const Child = ({setCount}) => {
setCount(10) // using the hook set call
return (
<div>
Some Child Text
</div>
);
};
export default Child;
import React,{useState}来自“React”;
导出常量父项=()=>{
const[count,setCount]=useState(0);
返回
当前计数为{count}
//将钩子组呼叫作为道具传递给孩子
}
const Child=({setCount})=>{
setCount(10)//使用hook set调用
返回(
一些子文本
);
};
导出默认子对象;
setCount
不是一个钩子,它只是另一个函数,所以您可以将其作为道具传递。您还可以考虑useffect
或useCallback
的输出,它们可以作为道具传递useState
是一个钩子,useCallback
是一个钩子,甚至对于封装其他钩子的任何函数来说,它们都不应该作为prop传递
为什么?
要回答这个问题,首先想一想你为什么要把钩子当作道具来传递?将钩子作为道具传递的好处是,您可以有条件地传递另一个钩子/跳过调用。
但是对于钩子,不应该有条件地调用它。所以没有意义。要将其作为道具传递,只需导入并使用它。您的示例非常好,可以使用setCount只是一个函数。根据您的示例,状态属于父组件。但是,它的值将来自另一个组件API 如果将示例中的子组件更改为常规的
,也会发生同样的情况
我知道这个示例可能与您的实际案例实现不匹配。我只建议您注意子组件API是如何设计的,以使父组件不与子组件紧密耦合。ya这是可能的。它像函数调用一样简单,这很好,实际上你应该这样做。事实上,它是一种模式,将
set
hook传递给子对象,以保持父对象中的所有状态,如果您没有使用像Redux这样的状态管理库,当setCount函数更改时,这将重新启动子项,但如果性能仍然良好,这是可以的。