关于react的理解—setState失效?

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在兄弟结点中必须是唯一的

你可能感兴趣的:(react.js)