在React Native setState中找不到变量字母

0 javascript ecmascript-6 reactjs react-native

我试图用setState一个TextInput像这样:

class AppS extends Component {
  constructor(props){
    super(props);
    this.state = { 
      ShowText: '',
      letter: ''
    };
  }
  render(){
    return( 
      <View>  
        <TextInput style ={{color: "green"}}
          onChangeText = {(letter)=>this.setState({ letter })}>
        </TextInput>
        <Text style = {styleForApps.fon}> {this.state.letter} </Text>
        <Text style = {styleForApps.body}> {this.state.ShowText} </Text>
      </View>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

当我setState像这样试验:

onChangeText = {(txt)=>this.setState({ letter: txt })}>
Run Code Online (Sandbox Code Playgroud)

它运作良好.但当我把它改为:

onChangeText = {(txt)=>this.setState({ letter })}> 
Run Code Online (Sandbox Code Playgroud)

它始终给出错误"无法找到变量字母".我认为这setState一点应该由括号中的参数定义txt.

你能解释一下吗,我不明白它究竟是如何传递价值的letter.

Li3*_*357 7

您正在尝试使用速记属性定义.此ES6功能允许您仅在键和值相同时指定密钥.它没有采用参数的值.这意味着当你这样做:

this.setState({
  letter
});
Run Code Online (Sandbox Code Playgroud)

这意味着:

this.setState({
  letter: letter
});
Run Code Online (Sandbox Code Playgroud)

因为它是desugars所以键和值是相同的.然后报告错误,因为letter没有定义.你可以这样做:

(letter) => this.setState({ letter })
Run Code Online (Sandbox Code Playgroud)

这是因为你命名参数letter,而不是txt.