Javascript 在接收到适当的状态之前,应对部件安装作出反应
我需要从get请求接收一些数据,然后将其作为道具发送到另一个组件 然而,它似乎试图在收到我需要的状态之前呈现另一个组件。以下是当前代码:Javascript 在接收到适当的状态之前,应对部件安装作出反应,javascript,reactjs,Javascript,Reactjs,我需要从get请求接收一些数据,然后将其作为道具发送到另一个组件 然而,它似乎试图在收到我需要的状态之前呈现另一个组件。以下是当前代码: class App extends Component{ constructor(props){ super(props); this.state = { logList:[], }; } componentWillMount(){ var m
class App extends Component{
constructor(props){
super(props);
this.state = {
logList:[],
};
}
componentWillMount(){
var me=this;
var logDirs, currentDirectory;
const request = axios.get(baseUrl+"/logs")
.then(function(response){
logDirs = response.data.logdirs;
currentDirectory = logDirs[me.props.directory];
axios.get(currentDirectory.name)
.then(function(response){
me.setState({
logList: response.data.logs
});
});
});
}
renderLogDirectories(){
if (this.state.logList.length>0){
return (<LogDirectories logs={this.state.logList}/>);
}
}
render(){
if(this.state.logList.length>0)
return (
<div>
{this.renderLogDirectories()}
</div>
);
}
}
类应用程序扩展组件{
建造师(道具){
超级(道具);
此.state={
日志列表:[],
};
}
组件willmount(){
var me=这个;
var logDirs,currentDirectory;
const request=axios.get(baseUrl+“/logs”)
.然后(功能(响应){
logDirs=response.data.logDirs;
currentDirectory=logDirs[me.props.directory];
get(currentDirectory.name)
.然后(功能(响应){
我是塞斯塔({
日志列表:response.data.logs
});
});
});
}
RenderLogDirectory(){
if(this.state.logList.length>0){
返回();
}
}
render(){
if(this.state.logList.length>0)
返回(
{this.renderLogDirectory()}
);
}
}
以下是需要接收道具的组件:
class LogList extends Component{
render(){
var me = this;
return (
<ListGroup>
<ListGroupItem
bsStyle="success">{this.props.directory}</ListGroupItem>
{(this.props.logs).map(function (logList, key) {
return (
<Link><ListGroupItem key={key}>
{logList}
</ListGroupItem></Link>);
})}
</ListGroup>
);
}
}
类日志列表扩展组件{
render(){
var me=这个;
返回(
{this.props.directory}
{(this.props.logs).map(函数(logList,key){
返回(
{logList}
);
})}
);
}
}
那么,我可以做些什么改变来让它工作呢
就目前而言,我遇到的错误有:
未捕获不变冲突:App.render():必须返回有效的React元素(或null)
未捕获(承诺中)TypeError:无法读取null(…)的属性“\u currentElement”
如果未加载任何内容,则需要返回有效元素,如错误所示
render(){
if(this.state.logList.length>0) {
return (
<div>
{this.renderLogDirectories()}
</div>
);
}
return (<div>Loading</div>);
}
render(){
if(this.state.logList.length>0){
返回(
{this.renderLogDirectory()}
);
}
返回(装载);
}
完全忘记了这一点。这正是它所需要的:)谢谢!