从 React JS 中的 componentDidMount 获取

Fetch from componentDidMount in React JS

我有一个组件 <BaseMap /> 和一个提取行 fetchUser={this.fetchUser.bind(this)},我在渲染方法中 BaseMap 之后立即使用它们(例如 <BaseMap fetchUser={this.fetchUser.bind(this)}/>)。

然而,有人建议我应该把它放在 componentDidMount 中。但是我应该怎么做呢?我不能只将 fetchUser={this.fetchUser.bind(this)} 复制到 componentDidMount

据我了解,您的组件设置如下:

class Parent .... {
    ....
    fetchUser(){ 
    ....
    }

    ....
    render(){
        return ( 
        ...
            <BaseMap fetchUser={this.fetchUser.bind(this)}/>
        ...
        );
    }
}

class BaseMap .... {
    ....
    render(){
        let user = this.props.fetchUser();
        return ( 

            <div> { ...use user here ... }</div>

        );
    }
}

如有错误请指正。

建议您从 BaseMap 组件的 render 方法中调用 fetchUser 并移至其 componentDidMount 方法。然后将用户存储在组件的状态中并从那里使用它。

class BaseMap .... {
     constructor(props){
        super(props);
        this.state={user:null};
     }

    componentDidMount(){
        let user = this.props.fetchUser();
        this.setState({user:user});
    }

    render(){
        return ( 
            <div> {this.state.user?  
                       ...use user here ...
                        : "loading data"
            }</div>
        );
    }
}

将您的 fetchUser 方法移动到 BaseMap 组件,然后在 componentDidMount 中调用该方法作为 this. fetchUser()。否则将方法作为道具传递并在目标组件中访问它。