2014-09-24 2 views
2

У меня есть базовый класс в react, который рисует прямоугольник, когда я нажимаюКакой самый лучший способ запомнить переменные экземпляра в reactjs

Conq.R.Canvas = React.createClass 

    displayName: 'Canvas' 

    componentDidMount: -> 
    @setState $(@getDOMNode()).offset() 

    onMouseDown: (e) -> 

    canvas = @getDOMNode() 
    context = canvas.getContext('2d') 
    context.fillRect e.clientX - @state.left, e.clientY - @state.top, 10, 10 

    render: -> 

    <canvas onMouseDown={@onMouseDown}></canvas> 

Он отлично работает. Является типичным для хранения вещей вроде offset в состоянии, или я должен просто установить его на this или положить его в props? Что такое конвенция и почему?

Не сбивайте меня за хранение, если оно не было смещено, это может быть другое значение, которое я хранил. Мой основной вопрос: где я могу поместить локальные переменные, которые используются только в экземпляре, и почему?

ответ

5

Это должно быть состояние/реквизита, если изменения он вызывает либо:

  • визуализации для вывода на другой результат
  • componentWillUpdate вести себя иначе
  • componentDidUpdate вести себя иначе

В этом случай this.top будет в порядке.

+0

Как подпункт для «рендеринга для вывода другого результата», я бы добавил, что «зависит от дочернего компонента». В противном случае палец вверх. –

+0

Это был бы другой результат, потому что вы создаете дочерний компонент с различными реквизитами. '' - разные результаты при изменении состояния. – FakeRainBrigand

Смежные вопросы