我在互联网上搜索了这个问题的答案,但我没找到.所以我在这里发帖子.
我有一个父组件(App)和一个子组件(Child).App组件的状态包含一些数据,如下所示:
class App extends Component {
constructor() {
super()
this.state = {
currentOrganization: {
name: 'name',
email: 'email'
}
}
render() {
return (
<Child data={this.state.currentOrganization} />
)
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的Child组件中,我有一个表单:
class Child extends Component {
constructor() {
super()
this.state = {
formData: {
name: '',
email: '',
}
}
}
render() {
return (
<Form ... />
)
}
}
Run Code Online (Sandbox Code Playgroud)
根据React文档,表单通常应该具有包含与表单的每个元素相对应的属性的状态.我的Child组件中的表单必须具有currentOrganization的数据(如App组件中所示)预先填充到自身中.
为了实现这一点,我必须将Child的状态设置为从其父级接收的道具.
检查我的Child组件是否收到了更新自己状态所需的道具的最佳方法是什么?
我有两个兄弟组件通过react中的上下文共享状态。组件之间的共享状态是一个数组。
如果我更新arr一个组件中的状态,我希望另一个组件侦听该更新并相应地执行某些操作。useEffect在第二个组件中使用时,我会监听arr状态变量中的更改。
例如:
// App Component -------
const App = props => {
const { arr, setArr } = useContext(GlobalContext)
const handleChange = () => {
const newArr = arr
[10, 20, 30, 40].map(v => {
newArr.push(v)
setArr(newArr)
})
return (...)
}
// App2 (Sibling) Component
const App2 = props => {
const { arr, setArr } = useContext(GlobalContext)
const [localArr, setLocalArr] = useState(0)
useEffect(
() => {
updateLocalState()
},
// fire if "arr" …Run Code Online (Sandbox Code Playgroud) 如何在 JSON 列中搜索空数组?
假设我有一config列有时 JSON 等于{"tier": []}.
WHERE JSON_CONTAINS(config, '', '$.tier') = 1
Run Code Online (Sandbox Code Playgroud)
或者
WHERE JSON_CONTAINS_PATH(config, 'one', '$.tier') = NULL
Run Code Online (Sandbox Code Playgroud)
不返回任何结果。有什么我想念的吗?
我专门四处寻找答案,但在 SO 或 MySQL 文档上找不到任何内容。