react-native - React Native Inline 函数理解

标签 react-native performance

下面是来自一个简单的 React Native 类组件的 2 种代码模式。这些有什么性能差异吗?不同之处在于调用 native 控件事件的函数的方式。如果存在性能差异,我想知道如何检查和验证实际上是否存在性能差异。
模式 1:-

class MyClass extends React.Component {
    constructor(props) {
        super(props);

        this.state = {
            name: "",
        }
    }

    onNameChange = (text) => {
        this.setState({ name: text });
    }

    render() {
        const { name } = this.state;
        return (
            <TextInput onChangeText={this.onNameChange} value={name} />
        )
    }
}
模式2:-
class MyClass extends React.Component {
    constructor(props) {
        super(props);

        this.state = {
            name: "",
        }
    }

    onNameChange = (text) => {
        this.setState({ name: text });
    }

    render() {
        const { name } = this.state;
        return (
            <TextInput onChangeText={(text) => {
                this.onNameChange(text);
            }} value={name} />
        )
    }
}
如果存在性能差异,那么我需要采用第一种模式。

最佳答案

箭头函数每次返回一个新函数。这导致 React 认为我们的观点发生了一些变化,而实际上什么都没有。简单地将该函数从内联移动到我们类上的一个方法,我们就完全解决了这个问题。现在,当 React 查看此 View ​​时,它总是会看到对 this 的引用。
引用:https://medium.com/@adamjacobb/react-native-performance-arrow-functions-binding-3f09cbd57545
因此,不要使用第二个模式,而是使用第一个模式,避免在渲染中使用箭头函数

关于react-native - React Native Inline 函数理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68031684/

相关文章:

javascript - 来自某个州的 react-native-map 标记图像来源

python - 如何通过快速查找维护双端队列?

react-native - 如何修复 React-Native 错误 'could not unzip gradle-5.4.1-all.zip'

ios - 如何在 React Native 中使用现有的 Swift 应用程序?

Ruby - 检查 if block_given 之间有什么区别?和!block.nil?

java - 如果在没有任何选项的情况下运行 JVM,对内存使用有何影响?

Python队列组合

performance - 测量 JSF 应用程序性能的可用工具

ios - 在 iOS 模拟器中, native 应用程序的内存使用量不断增加

javascript - React Navigation v5 如何使用 typescript 在选项卡之间导航