我有 2 个组件和一个上下文提供程序,当我在父级别调用我的钩子时,我可以更改状态并让这 2 个组件通过上下文获取值
contex api 使用的工作演示,但我在父级别调用更改状态,这不是我想要的 https://stackblitz.com/edit/react-51e2ky?file=index.js
我想使用钩子更改内部组件的状态,但是当我单击navbar login.
https://stackblitz.com/edit/react-rgenmi?file=Navbar.js
家长:
const App = () => {
const {user} = loginHook()
return (
<UserContext.Provider value={user}>
<Navbar />
<Content />
</UserContext.Provider>
);
}
Run Code Online (Sandbox Code Playgroud)
导航栏.js
const Navbar = () => {
const user = React.useContext(userContex)
const {setUser} = loginHook()
return <div>{user ? <span>{user.name}</span> : <button onClick={() => {
setUser({
name: 'jane'
})
}}>navbar Login</button>}</div>
}
Run Code Online (Sandbox Code Playgroud)
定制挂钩
const loginHook = () => {
const [user, setUser] = React.useState(null)
return …Run Code Online (Sandbox Code Playgroud) 打字稿仍然给我错误
对象可能是 'null'.ts(2531)
即使我这样做
myRef && myRef.current && myRef.current.focus();
Run Code Online (Sandbox Code Playgroud)
如果我使用
myRef?.current?.focus();
Run Code Online (Sandbox Code Playgroud)
我有
Property 'focus' does not exist on type 'never'.ts(2339)
Run Code Online (Sandbox Code Playgroud) 我有这个对象数组
const a = {a:[{b:[{prop: 10}]}]}
访问 10 的值我做
a.a[0].b[0].prop // 10
我使用这个后备,确保事情不会破坏,但它不起作用?
a?.a[0]?.b[0]?.prop
,我可以使用像 lodash 的 get 或 check 这样的旧方法,但是如何使用问号语法?
const handleOnChange = (e: React.SyntheticEvent<HTMLInputElement>): void => {
console.log(e.name);
}
<input name="aa" onChange={handleOnChange} />
Run Code Online (Sandbox Code Playgroud)
为什么HTMLInputElementreact中没有name属性?