为什么列表视图单击处理程序在启动时执行函数

Why is ListView click handler executing functions on start

本文关键字:启动 执行 函数 程序 列表 视图 单击 处理 为什么      更新时间:2023-09-26

所以我使用 react-native,似乎当我的应用程序启动时,它实际上运行附加到点击处理程序的函数? 这是应该发生的吗?还是这是一个错误??

我有:

<TouchableHighlight onPress={() =>this._pressData(rowID)}></TouchableHighlight>

然后在我拥有的函数中:

this._pressData(theRow) { console.log(theRow); }

当我启动我的应用程序时,我只会得到一个控制台日志,上面有最多 1000 个数字。 如果我在那里放更多的逻辑,它想要执行这一切。

例如,如果我把它放在那里,

this._pressData(theRow) { 
     this.setState({test: theRow});
     console.log(this.state.test);
}

该应用程序需要很长时间才能启动,因为它实际上运行了一千次 setState,并且控制台记录了它。

我如何让这些功能仅在 Press 上运行。 而不是在启动时?(或者这是一个错误?

(找出这一点,回答了我之前关于这个问题的问题。 这个问题显然是由同一个问题引起的。)

有什么想法吗?

开始认为我只是一个坏掉的构建。 也许是时候降级了,哈哈

尝试使用 ES6 胖箭头像这样更改代码:

<TouchableHighlight onPress={() => this._pressData(rowID)}></TouchableHighlight>

然后以这种方式声明你的函数

_pressData = (theRow) => { 
     this.setState({test: theRow});
     console.log(this.state.test);
}