首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在React中通过外部函数添加要列出的组件内部的项

问在React中通过外部函数添加要列出的组件内部的项
EN

Stack Overflow用户
提问于 2022-05-24 17:04:31
回答 2查看 75关注 0票数 -1

如何使用外部函数更新组件中的钩式列表?为了清楚起见,假设伪代码:

list.tsx

代码语言:javascript
复制
const lists = () => {

const [list, setlist] = useState([]);

return <>
          The fruits are:
          { list.map( x => <>x.name<br /></> ) }
       </>

}

export { lists }

index.tsx

代码语言:javascript
复制
import { lists } from './list'
...
<Lists /> 
<button onClick={ () => lists.setlist.push({name: 'banana'}) }>Add Banana</button>

欢迎任何研究提示。

我尝试了一些解决方案,比如使用“静态”,并在类中导出函数,但没有成功。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-24 17:16:12

list.tsx

代码语言:javascript
复制
const lists = ({ list }) => {

return <>
          The fruits are:
          { list.map( x => <>x.name<br /></> ) }
       </>

}

index.tsx

代码语言:javascript
复制
const [list, setlist] = useState([]);

...
<Lists list={list} /> 
<button onClick={ () => setlist(prev => [..prev, {name: 'banana'}]) }>Add Banana</button>

儿童状态

list.tsx

代码语言:javascript
复制
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

代码语言:javascript
复制
const listsRef = useRef(null)

...
<Lists listsRef={listsRef} /> 
<button onClick={ () => listsRef.current(prev => [..prev, {name: 'banana'}]) }>Add Banana</button>
票数 1
EN

Stack Overflow用户

发布于 2022-05-24 17:10:06

使用useContext钩子的最简单方法,那么标记的所有子元素都可以访问顶级状态

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72366803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档