使用onSubmitEditing时,this.state.text.split()是未定义的错误

时间:2017-08-14 18:55:36

标签: facebook react-native

根据Facebook的官方文件:

每次文本更改时,

onChangeText都会调用一个函数

onSubmitEditing在提交文本时需要调用函数

我正在关注text input handling上的官方Facebook教程,代码:

export default class PizzaTranslator extends Component {
  constructor(props) {
    super(props);
    this.state = {text: ''};
  }

  render() {
    return (
      <View style={{padding: 10}}>
        <TextInput
          style={{height: 40}}
          placeholder="Type here to translate!"
          onChangeText={(text) => this.setState({text})}
        />
        <Text style={{padding: 10, fontSize: 42}}>
          {this.state.text.split(' ').map((word) => word && '').join(' ')}
        </Text>
      </View>
    );
  }
}

取一个句子并将其所有单词更改为表情符号,但如果我将onChangeText更改为onSubmitEditing,则在提交文字时会收到错误this.state.text.split is not a function. (In 'this.state.text.split('')', 'this.state.text.split' is undefined)

1 个答案:

答案 0 :(得分:2)

此时文档是正确的,onChangeTextonSubmitEditing都要执行回调函数。本质区别在于提供给回调函数的参数。 onChangeText将新值作为字符串给出,onSubmitEditing以对象作为第一个参数执行回调函数。您可以使用

查看结果
<TextInput
  onChangeText={(text) => {this.setState({text}); console.warn('text', text);}}
  onSubmitEditing={(argument) => console.warn(Object.keys(argument))}
/>