Javascript 为什么子组件没有得到父组件';在React中使用Axios的s道具 我用这样一个简单的标志来解决它: 我在states对象上添加了一个新的标志属性:loaded:false

Javascript 为什么子组件没有得到父组件';在React中使用Axios的s道具 我用这样一个简单的标志来解决它: 我在states对象上添加了一个新的标志属性:loaded:false,javascript,http,reactjs,asynchronous,axios,Javascript,Http,Reactjs,Asynchronous,Axios,当我获得数据时,我将加载的值更新为true,如下所示: helpers.getValues().then(results => this.setState({values:results.data,loaded:true})); 最后,在render()中,我首先检查加载的是否为true,然后渲染子组件,如下所示: {this.state.loaded == true ? <ChildComponent values={this.state.values} name="theo

当我获得数据时,我将加载的
值更新为true,如下所示:

 helpers.getValues().then(results => this.setState({values:results.data,loaded:true}));
  • 最后,在
    render()
    中,我首先检查加载的
    是否为true
    ,然后渲染子组件,如下所示:

    {this.state.loaded == true ? <ChildComponent values={this.state.values} name="theodore"/> : ''}
    
  • 这里我展示了ChildComponent(在一个单独的js文件中)。 在组件didmount中,我试图展示道具,但得到它的对象如下: {值:'',测试:'ok'}

    var ChildComponent = React.createClass({
        componentDidMount:function(){
            console.log(this.props);
        },
        render:function(){
            return(
                <div>
                    <ul>'nothing'</ul>
                </div>
            )
        }
    });
    
    var ChildComponent=React.createClass({
    componentDidMount:function(){
    console.log(this.props);
    },
    render:function(){
    返回(
    “什么都没有”
    )
    }
    });
    
    我猜这是一个延迟问题,其中chld组件在axios异步从服务器返回数据之前加载


    感谢处理过类似情况的人提供的任何帮助。

    因为您将
    this.state.movies
    ,而不是
    this.state.values
    传递给
    ChildComponent

    你是如何做到的

    <ChildComponent1 values={this.state.movies} test="ok"/>
    
    <ChildComponent1 values={this.state.values} test="ok"/>
    
    
    
    应该是怎样的

    <ChildComponent1 values={this.state.movies} test="ok"/>
    
    <ChildComponent1 values={this.state.values} test="ok"/>
    
    
    
    在结果从服务器返回之前,我们不允许子组件渲染,这是一个明显的异步问题。好的。但在您的示例中,您的状态中没有movies属性,但您将其传递给孩子。电影从何而来?即使您的孩子在从服务器返回请求数据之前渲染,它也应该在执行
    然后
    承诺块时再次渲染,因为您正在状态中设置一个值,每次状态更改时,react组件都会渲染。是的,我以前注意到了这一点,但在childcomponent上,我曾经做过映射()创建
  • 列表,我得到了错误!也许我应该在那里添加一个if语句,我不知道。但现在我需要它,它就可以工作了。谢谢,您需要添加一个if条件来检查值是否为空。