Мне нужно было исправить принятый ответ выше, чтобы он работал, используя вместо этого указателя.
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
Давайте подумаем о том, как подойти к этому.
Требования:
Учитывая эти требования, основанные на 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 .