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



我尝试在这样的TextInput中使用setState

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>
    );
  }
}

当我尝试这样的setState时:

onChangeText = {(txt)=>this.setState({ letter: txt })}>

效果很好。但是当我将其更改为:

onChangeText = {(txt)=>this.setState({ letter })}> 

它总是给出错误"找不到可变字母"。我认为setState将参数指向括号中应该由txt定义的参数。

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

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

this.setState({
  letter
});

它的意思是:

this.setState({
  letter: letter
});

因为它脱糖,所以键和值是相同的。然后,这将报告错误,因为未定义letter。你可以做:

(letter) => this.setState({ letter })

这是有效的,因为您将参数命名为 letter ,而不是 txt

onChangeText 接受一个函数并将用户输入的文本传递到该函数中,在您的示例中,您将该用户输入命名为 txt但在setState内部您没有将此用户输入分配给letter,您正在做的是指定this.setState({letter})翻译成 this.setState({letter: letter}) 并且因为您没有名为 letter 的变量,所以会出现错误

最新更新