如何使用外部函数更新组件中的钩式列表?为了清楚起见,假设伪代码:
list.tsx
const lists = () => {
const [list, setlist] = useState([]);
return <>
The fruits are:
{ list.map( x => <>x.name<br /></> ) }
</>
}
export { lists }index.tsx
import { lists } from './list'
...
<Lists />
<button onClick={ () => lists.setlist.push({name: 'banana'}) }>Add Banana</button>欢迎任何研究提示。
我尝试了一些解决方案,比如使用“静态”,并在类中导出函数,但没有成功。
发布于 2022-05-24 17:16:12
list.tsx
const lists = ({ list }) => {
return <>
The fruits are:
{ list.map( x => <>x.name<br /></> ) }
</>
}index.tsx
const [list, setlist] = useState([]);
...
<Lists list={list} />
<button onClick={ () => setlist(prev => [..prev, {name: 'banana'}]) }>Add Banana</button>儿童状态
list.tsx
const lists = ({listsRef}) => {
const [list, setlist] = useState([]);
useEffect(() => {
listsRef.current = (callback) => setlist(prev => callback(prev))
}, [])
return <>
The fruits are:
{ list.map( x => <>x.name<br /></> ) }
</>
}index.tsx
const listsRef = useRef(null)
...
<Lists listsRef={listsRef} />
<button onClick={ () => listsRef.current(prev => [..prev, {name: 'banana'}]) }>Add Banana</button>发布于 2022-05-24 17:10:06
使用useContext钩子的最简单方法,那么标记的所有子元素都可以访问顶级状态
https://stackoverflow.com/questions/72366803
复制相似问题