在React中说我有一个如此呈现的组件:
render() {
return (<AComponent ref={(ref) => { this.ref = ref}} style={{height: 110}} />);
}
我检查了道具与nextProps,
componentWillReceieveProps(nextProps) {
if (this.props !== nextProps) {
this.setState({ ..this.getState(nextProps) });
}
}
它们总是不会非常平等,因为样式道具被赋予了一个对象字面,而ref是一个匿名函数吗?或者React有什么样的东西,样式和ref标签不考虑道具?如果是的话,还有其他排除吗?
答案 0 :(得分:2)
ref
和key
很特殊,实际上并没有作为道具传递。
style
只是一个常规道具。 this.props !== nextProps
永远是真的;至少你需要对它们进行浅见比较,但是对于style={{height: 110}}
,this.props.style === nextProps.style
总是错误的。您可以通过将样式拉出到外部变量并使用它来代替内联对象来解决这个问题。