Reactjs 道具传递功能的良好实践?

Reactjs 道具传递功能的良好实践?,reactjs,Reactjs,我知道React不区分这个.state。但是当您在子组件中时,diff是在this.props上完成的。所以我想知道如果一个prop的值是一个函数,那么差分系统是如何差分的?如果我将一个函数放入this.props或this.state中,这是一种不好的做法吗(例如对性能不好还是什么?如果您将函数作为props传递给子组件,则会不断触发diff算法。如果您关心这种情况,可以实现shouldComponentUpdate,您可以忽略包含函数的属性 您可以尝试将未绑定函数传递给子组件,并让子组件使用

我知道React不区分
这个.state
。但是当您在子组件中时,diff是在
this.props
上完成的。所以我想知道如果一个
prop
的值是一个函数,那么差分系统是如何差分的?如果我将一个函数放入this.props或this.state中,这是一种不好的做法吗(例如对性能不好还是什么?

如果您将函数作为
props传递给子组件,则会不断触发diff算法。如果您关心这种情况,可以实现
shouldComponentUpdate
,您可以忽略包含函数的属性


您可以尝试将未绑定函数传递给子组件,并让子组件使用实例方法,例如:

class Container extends Component {

    deleteItem(index) {
        actionThatDeletesSomething(index);
    }

    render(){
        return(
            <ChildComponent deleteItem={ this.deleteItem } />
        )
    }
}


class ChildComponent extends Component {

    render(){
        return(
            <a onClick={ this.props.deleteItem(index) } />
        )
    }
}
类容器扩展组件{
删除项目(索引){
删除方法(索引)的操作;
}
render(){
返回(
)
}
}
类ChildComponent扩展组件{
render(){
返回(
)
}
}

如果在子组件中传递到props
函数
,diff算法将不断触发。如果您关心这一点,您可以实现
shouldComponentUpdate
,您可以忽略包含
函数的属性。示例-,你可以尝试这个示例,只需注释
shouldComponentUpdate
非常有趣谢谢@Alexander我会研究的,如果你能将其移动到我愿意接受的答案。你能再解释一下吗我不明白:(啊,谢谢,这很有趣,我得多考虑一下,我不完全理解,但这是我自己的不足。我想了想后再报告:)@Sagi Medina实际上在这个例子中并没有性能提升,因为您仍然传递对函数的引用,这对于无法比较两个函数之间差异的diff算法很重要。。。。