изменение fontSize TextInput плавно

Мне нужно было исправить принятый ответ выше, чтобы он работал, используя вместо этого указателя.

var Parent = React.createClass({
doSomething: function() {
    console.log('doSomething!');
},

render: function() {
    var that = this;
    var childrenWithProps = React.Children.map(this.props.children, function(child) {
        return React.cloneElement(child, { doSomething: that.doSomething });
    });

    return <div>{childrenWithProps}</div>
}})

Обновление: это исправление для ECMAScript 5, в ES6 нет необходимости в var, что = this

0
задан Ketan Malhotra 13 July 2018 в 23:41
поделиться

1 ответ

Давайте подумаем о том, как подойти к этому.

Требования:

  1. Эффект должен происходить только с по меньшей мере 3 символами в текстовом поле
  2. Максимальный и минимальный размер, размер шрифта которого может достигать
  3. Шрифт должен уменьшаться, если новый ввод текста длиннее предыдущего.
  4. Шрифт должен получить больше, если новый ввод текста короче предыдущего.

Учитывая эти требования, основанные на gif, мы можем придумать чистое решение.

changeText = value => {
  if (value.length > 3) {
    if (
      this.state.value.length < value.length &&
      this.state.fontSize > MIN_FONT_SIZE
    ) {
      this.setState(({ fontSize }) => ({ fontSize: fontSize - INCREMENT, value }));
    } else if (
      this.state.value.length > value.length &&
      this.state.fontSize < MAX_FONT_SIZE
    ) {
      this.setState(({ fontSize }) => ({ fontSize: fontSize + INCREMENT, value }));
    }
  }
};

Вот полный рабочий пример, https://snack.expo.io/@roach_iam/increasing-fontsize-textinput .

0
ответ дан Kyle Roach 17 August 2018 в 12:06
поделиться
Другие вопросы по тегам:

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