我有一个useInput钩子组件,其工作原理如下:
useInput(
<input placeholder="phone number" />,
"phone"
)
它获取一个(input,inputName)并返回一个挂钩的输入组件。 当我想动态更改视图中现有输入的可见性时,出现一个错误:与上次渲染相比,渲染了更多的钩子。
{this.state.showMyInput && useInput(
<input placeholder="phone number" />,
"phone"
)
}
答案 0 :(得分:1)
您不能在react documentation中使用带条件运算符的钩子。
您可以一直调用hook并将结果存储在变量中,而仅对渲染进行条件处理。
const input = useInput(input, inputName);
...
{this.state.showMyInput && input}
答案 1 :(得分:1)
根据react docs,您不应在条件语句内调用钩子。相反,请在钩子中使用条件语句:As explained here
答案 2 :(得分:-1)
我在通过循环数组呈现的 Card
组件中使用了钩子,但我没有使用 key
。添加密钥已修复错误。
cards.map(({ id, ...rest }) => (
<Card key={id} id={id} {...rest} />
))