Почему render () выдает эту ошибку: ':' ожидается - PullRequest
0 голосов
/ 14 декабря 2018

Ошибка ':' 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 голосов
/ 14 декабря 2018

Вы неправильно реализовали оператор возврата - используйте фигурные скобки return ().Используя return {}, вы возвращаете объект.Кроме того, обратите внимание, что лучше, если вы деструктурируете данные из состояния перед рендерингом.

render() {
    const {obj} = this.state;
    return (obj && <MyComponent />);
}
0 голосов
/ 14 декабря 2018

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...