aaa*_*nia 6 javascript reactjs react-hooks
当我编写这段代码时,出现错误:
React Hook“useRef”无法在回调内调用。React Hooks 必须在 React 函数组件或自定义 React Hook 函数中调用
我应该用这段代码做什么?
return ITEMS.map((item, i) => {
const elementRef = useRef(null);
return (
<div
ref={elementRef}
key={i}
>
<p>{item.name}</p>
<Wrapper>
{item.name === visibleItem && (
<Item
parentRef={elementRef}
/>
)}
</Wrapper>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
这里有两种可能性,要么useRef与对象/数组一起使用,要么createRef按照 Yevgen Gorbunkov 的建议使用。
我不完全确定这些选项的可行性,因为该createRef选项将在每次渲染上创建全新的引用,并且useRef您需要确保您的键/索引始终相同的选项。
const ITEMS = [{ name: "test" }, { name: "test2" }];
export default function App() {
const ref = useRef({});
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
{ITEMS.map((item, idx) => {
return (
<div key={idx} ref={element => (ref.current[idx] = element)}>
<p>{item.name}</p>
<Wrapper>
{item.name === visibleItem && (
<Item parentRef={ref.current[idx]} />
)}
</Wrapper>
</div>
);
})}
{ITEMS.map((item, idx) => {
const ref = createRef();
return (
<div key={idx} ref={ref}>
<p>{item.name}</p>
<Wrapper>
{item.name === visibleItem && <Item parentRef={ref} />}
</Wrapper>
</div>
);
})}
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12512 次 |
| 最近记录: |