我正在尝试使用setNativeProps({ text: '' })
清除文本输入,根据文档是一种常见的方式 - 由于状态更改的闪烁 - 但是,我确实注意到{{1}调用onChange
时不调用。对我来说,这是一个问题,因为我使用的是可调整大小的TextArea。我需要TextArea重置其高度,目前已完成setNativeProps
。
如果有人可以帮助阐明我的问题,我们将不胜感激。
这是组件
onChange
从我的其他组件,我正在执行以下操作来清除输入
import React, { Component } from 'react';
import {
TextInput,
} from 'react-native';
export default class Input extends Component {
constructor() {
super();
this.state = {
height: 35,
};
this.handleChange = this.handleChange.bind(this);
}
componentWillMount() {
const { defaultHeight } = this.props;
if (defaultHeight) {
this.setState({
height: defaultHeight,
});
}
}
handleChange(event) {
console.log(event);
if (this.state.height !== event.nativeEvent.contentSize.height) {
this.setState({
height: Math.max(this.props.defaultHeight, event.nativeEvent.contentSize.height),
});
}
if (this.props.onChange) {
this.props.onChange(event);
}
}
render() {
const { style, ...props } = this.props;
return (
<TextInput
ref="input"
style={[{ height:this.state.height }, style]}
multiline
{...props}
onChange={this.handleChange}
/>);
}
}
Input.propTypes = {
style: React.PropTypes.number,
onChange: React.PropTypes.func,
defaultHeight: React.PropTypes.number,
};
答案 0 :(得分:0)
我仍然没有找到一种方法让onChange仍被调用,但我确实找到了解决方案。
解决方案是创建另一个函数来调用setNativeProps并重置状态
resetInputText() {
this.refs.input.setNativeProps({ text: '' });
this.setState({
height: this.props.defaultHeight,
});
}
从我的其他组件中,我可以调用this.refs.input.resetInputText();
并查看所需的结果。