反应条件渲染无法从状态中识别出 true

React conditional rendering not recognising true from state

所以我有这个带有条件的简单函数 return:

export default function App() {
const appState = useState({
signed: true,
user: {
  login: null,
  password: null,
  rights: null,
},
});

return <div className="app">{appState.signed ? "does not" : "work"}</div>;
}

问题是代码总是return“有效”。 不能用state条件渲染吗?

useState 挂钩为您提供了一个包含状态值和 setter 方法的数组。

问题是您正在访问 useState 返回的数组,而您无法访问 signed 它导致 false 使文本 'work'待展示

所以改为这样做

export default function App() {

  const [appState, setAppState] = useState({
    signed: true,
    user: {
      login: null,
      password: null,
      rights: null,
    },
  });

 return <div className="app">{appState.signed ? "does not" : "work"}</div>;
}

useState hook returns 一个长度为 2 的数组。

 const [appState, changeAppState ] = useState({
signed: true,
user: {
  login: null,
  password: null,
  rights: null,
},
});

...

//To change signed to true, try using the callback pattern

    changeAppState ((prevAppState) => ({
       ...prevAppState,
      signed: false
    }));
    
//You can do this, but callback approach is safer

    changeAppState ({
       ...prevAppState,
       signed: false
    });