ReactJS:将状态传递给子级返回未定义

时间:2019-09-19 10:58:32

标签: javascript reactjs state

我正在父组件中设置状态。然后,当设置了该状态(使用componentDidMount)时,我需要将其传递给孩子。

当前,由于它在子组件中返回undefined。我认为这是因为在传递不存在的状态时未设置状态。使其不确定。

尝试将boolean条件设置为for状态,因此在通过之前必须为true。 Booleans在孩子,父母中的任何地方,我认为这可能会有所作为,并且会阻止组件在我通过的道具存在之前对其进行查找。

在这里设置yearArr,结果是在安装组件时执行了功能

    componentDidMount() {
        const yearArrSorted = dataSet && this.playFunction();

        this.setState({
            locationData: dataSet,
            yearArr: yearArrSorted
        });
        this._layerRendering();
        this._animate();
    }

这是功能:

playFunction = () => {
        //i know this is unreadable, but i wanted to see how simple i could go.
        return dataSet.map(i => {
            return Object.keys(Object.values(i)[2])
                .map(i => (i.startsWith(9) ? 19 + i : 20 + i))
                .sort();
        })[0];
    };

这里的状态:

    this.state = {
            locationData: "",
            year: 95,
            elevationScale: elevationScale.min,
            yearArr: []
        };

Hjere是传递状态的地方,我非常骇人的方法试图让状态仅在设置了状态后才传递:

        <YearSelector
                    yearOnChange={this.yearOnChange}
                    year={this.state.year}
                    dataStateChange={this.dataStateChange}
                    dataSet={dataSet}
                    years={this.state.yeaArr.length > 0 && this.state.yeaArr}
                />

我希望在设置状态时将状态作为道具发送给子组件,以便可以通过道具数组将道具用于.map并使用{{1}创建一个<select> DOM元素}

可以根据需要编辑问题,并可以提供代码。

1 个答案:

答案 0 :(得分:0)

已解决问题。

最初尝试过此方法,但由于任何原因均无法正常工作。

                    years={this.state.yearArr && this.state.yearArr}

现在可以用了,我首先尝试的方法,这是反应的一种现状。