首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >React :尝试从子组件获取状态时状态为空

React :尝试从子组件获取状态时状态为空
EN

Stack Overflow用户
提问于 2021-02-07 21:18:08
回答 2查看 49关注 0票数 0

我有两个react组件。第一个组件是在调用我的api之后管理第二个组件的列表,我试图放置一个删除按钮来从列表中删除一个组件。

我得到了一个奇怪的行为:当我单击remove document按钮时,文档被设置为一个空数组。我得到了一个文档的空数组的日志。

父组件:

代码语言:javascript
运行
复制
export const DocumentEnvelope: React.FC<DocumentEnvelopeProps> = (props) => {
    const [documents, setDocuments] = useState([]);

    useEffect(() => {
        setDocuments([]);
        axios.get("/myurl").then(response => {
            response.data.forEach(document => {
                setDocuments((doc) => [...doc, <Document name={document.name} removeDocument={removeDocument}/>]);});
        });
    }, []);

    const removeDocument = (name) => {
        console.log(documents);
        setDocuments(documents.filter(item => item.name !== name));
    };

    return (
        <>
            {documents}
        </>
    );
};

子组件:

代码语言:javascript
运行
复制
interface DocumentProps {
    removeDocument,
    name: string
}

export const Document: React.FC<DocumentProps> = (props) => {

    return (
        <div>
            My document
            <button onClick={() => props.removeDocument(props.name)}>
                Remove document
            </button>
        </div>
    );
};
EN

Stack Overflow用户

发布于 2021-02-07 21:26:08

代码语言:javascript
运行
复制
<Document name=document.name removeDocument={removeDocument}/>

此部分缺少document.name周围的花括号,请考虑使用不同的变量名,因为document用于在javascript中引用html文档。我还可以建议将数据存储在状态中,而不是组件本身。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66088396

复制
相关文章

相似问题

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