【问题标题】:Child Component doesn't render data passed from Parent component子组件不呈现从父组件传递的数据
【发布时间】:2020-05-27 11:55:48
【问题描述】:

我有子组件,在渲染函数中我正在填充这样的视图

{this.state.supportTopicMetadataTreeNode.children.map(
                        (metadata: SupportTopicMetadataTreeNode) => (
                            <div>
                                <SupportTopicMetadataContainer
                                    supportTopicMetadataTreeNode={metadata}
                                ></SupportTopicMetadataContainer>

                            </div>
                        )
  )}

SupportTopicMetadataTreeNode 的类型如下:

export default class SupportTopicMetadataTreeNode {
    public data: SupportTopicMetadata;
    public children: SupportTopicMetadataTreeNode[];
}

在父组件中,我在上面的组件中调用如下:

 {this.state.metadataList && this.state.metadataList.map((metadata: SupportTopicMetadataTreeNode) =>
                    <div>
                        <SupportTopicMetadataContainer supportTopicMetadataTreeNode={metadata}>
                        </SupportTopicMetadataContainer>
                    </div>

                )}

在调用上面的子函数之前,我将当前修改值的状态设置为metadaList,如下所示:

this.setState({ metadataList: filteredList });

但在子组件中,它没有填充filteredList 的有效数据。我已检查状态是否正确分配给metadataList 我的预期值没有得到问题是什么?

我也在尝试将filteredList 传递给子组件,以便可以直接在this.state.supportTopicMetadataTreeNode.children 上循环

知道如何将其传递给子状态或在子状态上定义的变量吗?

Update:

我已经像下面这样初始化了构造函数:

constructor(props: ISupportTopicMetadataEntryContainerProps) {
        super(props);
        this.state = {
            supportTopicMetadataTreeNode: props.supportTopicMetadataTreeNode,


        };

    }

所以我不需要像这样回答this.props.supportTopicMetadataTreeNode.children。现在我可以得到this.state.supportTopicMetadataTreeNode.children。不明白是什么问题。

【问题讨论】:

标签: reactjs


【解决方案1】:

您使用的组件数据不正确。在您的子组件 SupportTopicMetadataContainer 中,supportTopicMetadataTreeNode 是道具,而不是像您使用 this.state.supportTopicMetadataTreeNode.children 的状态。

应该是this.props.supportTopicMetadataTreeNode.children,这将解决您的问题。

【讨论】:

  • 我已经尝试过了,但是 filteredList.children 和 this.props.supportTopicMetadataTreeNode.children 中的数据不同,这就是我在这里的原因......没有得到线索,即使我在 @987654328 上得到了一些 [] 空数组@当它传递给SupportTopicMetadataContainer组件时
  • 你能显示整个组件代码或某些类型的所有过程吗?你可以把它放到codesandbox或者在问题中更新,这对理解你遇到了什么问题很有帮助
  • 它是一个很大的组件,在沙箱中也很难包含在内。我正在尝试使用代码沙盒。
  • 只是主要部分,不需要整个项目
  • 是的,我说的是单个组件,正在尝试。
猜你喜欢
  • 2019-02-27
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
  • 2020-10-22
  • 2017-06-10
  • 2018-02-15
相关资源
最近更新 更多