作者回复: 你好,船长,感谢抓虫,不过我重新跑了一下 https://gitee.com/evisong/geektime-column-oh-my-kanban/tree/v0.13.0 的代码,没能复现你提到的问题。 目前代码中AdminContext就是一个布尔值,你提到的“{isAdmin:false},是个 obj”,我怀疑你是不是在为Provider传值时传了obj?类似这样: - <AdminContext.Provider value={isAdmin}> + <AdminContext.Provider value={{isAdmin}}> 如果这么改代码的话,我本地确实能复现始终显示删除按钮的问题。
作者回复: 你好,Geek_b8f92f,这是个好问题。func && func(args) 是指func不为空时才会去调用它,这样的写法能提升程序的健壮性,也可以利用ES2020的新语法func?.(args),效果是相同的。但请注意一点,这里仅判断了是否为空,如果需要进一步提升健壮性,还需要判断func的类型typeof func === 'function'。 当然,这也并不意味着我们需要在所有使用参数的地方都去做类似的检查,还是要根据实际需要。如果感兴趣的话,可以了解一下防御性编程。
作者回复: 你好,进击的莫莫哒,非常高兴看到你对自己写的代码满意。
作者回复: 你好,Geek_8e9c8d,非常高兴看到你对自己写的代码满意。
作者回复: 你好,WL,(握手),你说得对,尤其“组件不负责保存上级组件的状态”这一点,是React数据流保持单向性的必要条件。
作者回复: 你好,船长,答案基本正确~ * 子-父通信:父组件通过props或context传递回调函数给子组件,子组件调用回调来实现; * 兄弟通信:如A与B通信,拆分成 子(A)-父通信 加上 父-子(B)通信
作者回复: 你好,船长,很棒的答案。在设计oh-my-kanban这个项目时应该是把有代表性的数据流都做进去了,万一有遗漏的还请指出哈。