Подтвердить что ты не робот

OnFocus и onBlur не реагируют на реакцию

У меня есть следующий код

<ElementsBasket name='nextActionDate' 
                      data={this.props.newLead.get('actions').get('nextActionDate')}>
                <div className="form-group">
                <span className="glyphicon glyphicon-calendar">Calendar </span>
                <span className="glyphicon glyphicon-triangle-bottom" ></span>

                  <input type="text" className="form-control" onFocus={this.type='date'} onBlur={this.type='text'}
                       placeholder="Enter your date here." 
                       value={this.props.newLead.get('actions').get('nextActionDate')}
                       onChange={onFieldChanged.bind(this, 'actions.nextActionDate')}
                       />       
                </div>
              </ElementsBasket>

Во входном теге, я пытаюсь, чтобы текст заполнителя появлялся в поле ввода по умолчанию, и при нажатии меня хотел бы, чтобы тип был изменен как дата. И проблема, похоже, заключается в том, чтобы щелкнуть элемент контроля на хроме. Он не будет показывать onFocus и onBlur.

Ps: Даже у onClick, похоже, такая же проблема

4b9b3361

Ответ 1

Это то, что вы ищете?

http://codepen.io/comakai/pen/WvzRKp?editors=001

var Foo = React.createClass({
  getInitialState: function () {

    return {
      type: 'text'
    };
  },
  onFocus: function () {

    this.setState({
      type: 'date'
    });
  },
  onBlur: function () {

    this.setState({
      type: 'text'
    });
  },
  render: function () {

    return(
      <input 
        type={ this.state.type } 
        onFocus={ this.onFocus } 
        onBlur={ this.onBlur } 
        placeholder="Enter your date here."
      />
    )
  }
});

React.render(<Foo/>, document.body);

Как я уже отмечал выше, метод рендеринга запускается впервые и после этого при каждом изменении состояния (и если shouldComponentRender возвращает true в случае его реализации):

https://facebook.github.io/react/docs/component-specs.html