react里return的问题

首先一个方法,return一个对象:

selectStatus(num) {
    if (num === '1') {
       return  {
        text:'直播预告中',
        num:123
      };

    }
  }

一个接口请求:

.then(res => {
        const { body } = res;
       
        this.setState({
        
          num: body.content.data[0].onlineNum  //string格式,值为'1'
        })
      })
      .catch()

在render方法里渲染时调用:

<div>{this.selectStatus(this.state.num).text}</div>   //为什么这样拿不到text?感觉是两个this的问题。

报错提示:

text is undefind
阅读 4.4k
4 个回答

目前写法没问题
传入1没问题
传入不是1肯定报错都没有返回东西
你这个错是直接渲染对象啊 <div>{this.selectStatus('1')}</div>
你确定你项目写的就是 你问的这代码吗?

你先去看看react child是什么就懂了

我直接这样是可以跑通的

export default class extends React.Component {
    selectStatus(num) {
        if (num === '1') {
            return  {
                text:'直播预告中',
                num:123
            };

        }
    }
    render() {
        return <div>{this.selectStatus('1').text}</div>
    }
}

除非你写的是这样才会报你那个错吧:

return <div>{this.selectStatus('1')}</div>

你不能把 this.selectStatus('1').text作为一个react child,最好的方法是

render() {
    const { text } = this.selectStatus('1');
    return (
        <div>{text}</div>
    ); 
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题