为什么render()会引发此错误:“:”应为

时间:2018-12-14 13:45:58

标签: reactjs jsx

错误':' expected出现在渲染方法中,并指向&&this.state.obj的类型为MyType

type MyType = {
    name: string,
};

constructor(props) {
   super(props);
   this.state = {
       obj: null
   };
}

componentDidMount() {
    this.setState({obj: {name: 'Vasya'}});
}

render() {
    return {this.state.obj && <MyComponent />};
}

2 个答案:

答案 0 :(得分:1)

您执行的return语句很差-请使用括号return ()而不是花括号。使用return {},您正在返回一个对象。 另外,请注意,最好在渲染之前从状态中解构数据。

render() {
    const {obj} = this.state;
    return (obj && <MyComponent />);
}

答案 1 :(得分:0)

return返回一个对象,而不是jsx。试试这个

type MyType = {
    name: string,
};

constructor(props) {
   super(props);
   this.state = {
       obj: null
   };
}

componentDidMount() {
    this.setState({obj: {name: 'Vasya'}});
}

render() {
    return (
        {this.state.obj && <MyComponent />}
    );
}

或者这个:

type MyType = {
    name: string,
};

constructor(props) {
   super(props);
   this.state = {
       obj: null
   };
}

componentDidMount() {
    this.setState({obj: {name: 'Vasya'}});
}

render() {
    if (this.state.obj)
        return <MyComponent />;
    else
        return null;
}