У меня есть форма, в которой я использую входной хук для сбора имени пользователя. затем у меня есть динамический c контекст, который должен обновить пользовательский объект, ну, этого не происходит, потому что состояние ввода остается пустым, когда я смотрю его на инструменте dev, и у меня есть ошибка компиляции:
TypeError: Cannot destructure property 'user' of 'Object(...)(...)' as it is undefined.
UseInput:
export function useInput(initialValue){
const [value, setValue] = useState("");
const onChange= e =>setValue(e.target.value)
const clear=()=>setValue("");
const reset=()=>setValue(initialValue)
return{
value,
setValue,
onChange,
clear,
reset
}
}
LoginForm:
export default function LoginForm(){
const {name,surname}=useInput("");
const {user, setUser}= useContext(UserManager);
const onSubmit =(name, surname)=>{
setUser({name,surname})
}
return(
<div>
<form>
<input name="name" value={name} ></input>
<input name="surname" value={surname}></input>
<button onClick ={onSubmit}> submit</button>
</form>
</div>
)
}
контекст:
const UserContext= React.createContext({})
function UserManager({ children }) {
const [user,setUser ]= useState({});
return (
<UserContext.Provider
value={{user, setUser}}
>
{children}
</UserContext.Provider>
);
}
приложение. js
return (
<UserManager>
<div className="App">
<LoginForm user={user}/>
</UserManager>
); }