setState失效?State 的更新可能是异步的
出于性能考虑,React 可能会把多个 setState() 调用合并成一个调用。
因为 this.props 和 this.state 可能会异步更新,所以你不要依赖他们的值来更新下一个状态。
// Wrong 这种不对
this.setState({
counter: this.state.counter + this.props.increment,
});
用这种方法写:
// Correct
this.setState((state, props) => ({
counter: state.counter + props.increment
}));
阻止默认行为
在 React 中另一个不同点是你不能通过返回 false 的方式阻止默认行为。你必须显式的使用 preventDefault 。例如,传统的 HTML 中阻止链接默认打开一个新页面,你可以这样写:
<a href="#" onclick="console.log('The link was clicked.'); return false">
Click me
</a>
在 React 中,可能是这样的:
function ActionLink() {
function handleClick(e) {
e.preventDefault(); //阻止默认行为
console.log('The link was clicked.');
}
return (
<a href="#" onClick={handleClick}>
Click me
</a>
);
}
在这里,e 是一个合成事件。React 根据 W3C 规范来定义这些合成事件,所以你不需要担心跨浏览器的兼容性问题。如果想了解更多,请查看 SyntheticEvent 参考指南。
条件渲染
使用 JavaScript 运算符 if 或者条件运算符去创建元素来表现当前的状态,然后让 React 根据它们来更新 UI。
1、元素变量
2、与运算符 &&
3、三目运算符 condition ? true : false
列表 & Key
key 帮助 React 识别哪些元素改变了,比如被添加或删除。因此你应当给数组中的每一个元素赋予一个确定的标识。
需要注意点: key在兄弟结点中必须是唯一的
版权声明:本文为zhangluludeCSDN原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。