01-React-hooks-useState基本使用

2020-11-01  本文已影响0人  低头看云

React-hooks-useState

useState的基本用法

格式:

 const [state, setState] = useState(initialState); 

初始状态

读取状态

const stateArray = useState(false);
stateArray[0];  // false => 状态值

更新状态

const [state, setState] = useState(initialState);

// 改变状态值 设置新的值
setState(newState);

// 之后渲染新的值
const [state, setState] = useState(initialState);
setState(prevState => nextState);
// Toggle a boolean
const [toggled, setToggled] = useState(false);
setToggled(toggled => !toggled);

// Increase a counter 
// 推荐使用回调的方式更新组件状态
const [count, setCount] = useState(0);
setCount(count => count + 1);
console.log(count)  // 1
setCount(count => count + 1);
console.log(count)  // 2

// Add an item to array
const [items, setItems] = useState(["old"]);
setItems(items => [...items, 'New Item']);

初始值状态计算

useState(/* Slow computation */)

使用useState()的陷阱

注意点示例

可以多次调用useState(),调用以相同的顺序

function Bulbs() {
  // Good
  const [on, setOn] = useState(false);
  const [count, setCount] = useState(1);
  // ...
}

无效调用useSate()

function Switch({ isSwitchEnabled }) {
  if (isSwitchEnabled) {
    // Bad 错误用法
    const [on, setOn] = useState(false);
  }
  // ...
}
function Switch() {
  let on = false;
  let setOn = () => {};

  function enableSwitch() {
    // Bad
    [on, setOn] = useState(false);  }

  return (
    <button onClick={enableSwitch}>
      Enable light switch state
    </button>
  );
}
上一篇下一篇

猜你喜欢

热点阅读