Задать вопрос

Как задать динамическое значение props?

Есть переменная dynamicData, которая меняется раз в 3 секунды. Как значение переменной задать в props или другим способом, чтоб компонент автоматически рендерился при изменении? Код jsfiddle.net/jv69s81h/4/
  • Вопрос задан
  • 371 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 1
AlekseyNemiro
@AlekseyNemiro
full-stack developer
Использовать state вместо props:
var Hello = React.createClass({
  getInitialState: function() {
    return { test: 0 };
  },
  componentWillMount: function() {
    setInterval(() => {
      var dynamicData = (Math.random() * 100).toFixed(0);
      this.setState({ test: dynamicData });
    }, 3000);  
  },
  render: function() {
    return <h2>{this.state.test}</h2>;
  }
});

ReactDOM.render(
  <Hello />,
  document.getElementById('container')
);

Если нужны именно props, то родительский компонент может менять состояние и передавать его в нужное свойство дочернего компонента, а дочерний компонент может обрабатывать изменения в componentWillReceiveProps(nextProps).

Еще можно вызывать forceUpdate(), но лучше так не делать.

От идеи внешнего управления компонентами лучше сразу отказаться. Будет меньше проблем. Все должно быть внутри компонентов, либо вообще не относиться к компонентам.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы