React native 为什么this.setState不是一个函数?

React native 为什么this.setState不是一个函数?,react-native,React Native,我创建了一个包含,我想点击每个可以改变这个状态 但当我单击它时,将显示错误: this.setState is not a function 为什么? 这是我的: 我的国家: constructor(props) { super(props); // this.renderRow = this.renderRow.bind(this); this.state = { tickets: [], selectedOption: '', theaters: [], tes

我创建了一个
包含
,我想点击每个
可以改变
这个状态

但当我单击它时,将显示错误:

this.setState is not a function
为什么?

这是我的

我的国家:

  constructor(props) {
    super(props);
    // this.renderRow = this.renderRow.bind(this);
    this.state = { tickets: [], selectedOption: '', theaters: [], test: '' };
  }
我尝试创建另一个函数:

  testPress = () => {
    this.setState({ test: 'test function' });
  }
然后像这样使用它:

renderItem({ item }) {
    return (
      <View style={styles.headerView}>
        <TouchableOpacity 
          onPress={() => {
            this.testPress();
          }}
        >
          <Text>{item.cnCity}</Text>
        </TouchableOpacity>
      </View>      
    );
  }
renderItem({item}){
返回(
{
这是testPress();
}}
>
{item.cnCity}
);
}
它仍然显示相同的错误。为什么?我想不出来

任何帮助都将不胜感激

检查一下这个东西
首先将引用保存到

你在报纸上看到了吗

  <TouchableOpacity 
      onPress={() => {
        context.setState({ test: 'test press' });
      }}
    >
{
setState({test:'testpress'});
}}
>
为什么这不起作用? 这在js中是一个称为context的关键字,它只依赖于调用者,所以当我们从另一个调用者调用函数时,它将使用函数上下文,其中没有状态
解决方案是绑定函数或保存引用,有时可以使用无名函数
有关更多信息,请访问查看此内容
首先将引用保存到

你在报纸上看到了吗

  <TouchableOpacity 
      onPress={() => {
        context.setState({ test: 'test press' });
      }}
    >
{
setState({test:'testpress'});
}}
>
为什么这不起作用? 这在js中是一个称为context的关键字,它只依赖于调用者,所以当我们从另一个调用者调用函数时,它将使用函数上下文,其中没有状态
解决方案是绑定函数或保存引用,有时可以使用无名函数

欲了解更多信息,请访问

如果您希望
平面列表
了解数据道具之外的数据更改,您需要将其设置为
外部数据
,尝试一下,并告诉我是否存在问题!嘿,这是一个非常有用的提示。我尝试在
data={cityArray}
下添加
extraData={this.state}
,虽然它可以工作,但仍然得到相同的错误…这里不是指类,而是指renderItemfunction@nima_moradi索尔,我不明白你在这里的意思。请你再解释一遍好吗?谢谢。如果您想让
FlatList
知道数据道具之外的数据更改,您需要将其设置为
extraData
,尝试一下,并告诉我是否存在问题!嘿,这是一个非常有用的提示。我尝试在
data={cityArray}
下添加
extraData={this.state}
,虽然它可以工作,但仍然得到相同的错误…这里不是指类,而是指renderItemfunction@nima_moradi索尔,我不明白你在这里的意思。请你再解释一遍好吗?谢谢。你的代码正在运行。非常感谢。但我以前没有这样用过。因此,如果我想使用
this.setState
,我必须将它放入某种react类函数中,或者我应该设置一些变量,比如
let context
connect
this
。我说得对吗?感谢您的帮助@nima_moradinin js这是函数值中的一个特殊关键字,仅取决于函数的调用方式,您可以使用bind或我所做的检查。谢谢。这对我很有帮助,祝福。你的代码正在运行。非常感谢。但我以前没有这样用过。因此,如果我想使用
this.setState
,我必须将它放入某种react类函数中,或者我应该设置一些变量,比如
let context
connect
this
。我说得对吗?感谢您的帮助@nima_moradinin js这是函数值中的一个特殊关键字,仅取决于函数的调用方式,您可以使用bind或我所做的检查。谢谢。这对我帮助很大,祝福。
 let context;
    class s extends Component{
         constructor(props) {
        super(props);
        // this.renderRow = this.renderRow.bind(this);
        this.state = { tickets: [], selectedOption: '', theaters: [], test: '' };
        context=this;
      }

     }
  <TouchableOpacity 
      onPress={() => {
        context.setState({ test: 'test press' });
      }}
    >