2016-10-23 3 views
0

Есть ли способы реализации этой идеи:Реакция: выполнить проверку перед рендером

Я хочу сделать чек перед рендерингом. Если проверка верна, чем рендер. Но если проверка ложна, то, во-первых, мне нужно сделать setState и только после рендера.

Спасибо.

+0

возможно внутри 'componentDidMount() {}'? –

+0

'render() {}' не место для setState, вы должны обрабатывать свое состояние в методах жизненного цикла компонента: https://facebook.github.io/react/docs/react-component.html – kouak

+0

Вот почему у меня есть задал этот вопрос. Мой crome дает мне ошибку об использовании 'setState' в рендеринге. –

ответ

1

Я думаю, что componentWillMount() буквально то, что вы после, но положить его в constructor() может быть лучшим местом для него.

class MyComponent extends React.Component { 
    constructor(props) { 
    super(props); 
    if (theCheck() === false) { 
     this.state = { 
     // ... 
     } 
    } 
    } 
} 
+0

Что такое супер? И почему мы используем только ** состояние **, а не ** setState **? –

+2

'super()' вызывает исходную конструкторную функцию из расширенного вами класса. В этом случае он будет вызывать конструктор из «React.Component». 'setState()' - это способ сказать React, что он должен повторно отобразить компонент, потому что его состояние изменилось. Если бы вы просто обновили 'this.state', это не обнаружило бы никакой разницы. Использование 'this.state' в конструкторе является допустимым, поскольку компонент еще не был отображен. – casr