В вашем коде мало проблем.
Во-первых, , вы пытаетесь получить доступ к id
из orgTypes
, который является массивом. Вместо этого вы можете определить нормальный идентификатор.
Во-вторых , вам нужно иметь contextProvider, обертывающий ваш компонент приложения
Третий . Вам необходимо обновить состояние в правильном формате, чтобы вы обновляли не данные, а выбранное значение. Для этого вам нужно иметь состояние для выбранного значения
Relavant code
index.js
ReactDOM(
<Store>
<App />
</Store>,
document.getElementById("root")
);
useForm.js
import { useContext, useState } from "react";
import { MyContextTSX } from "./Store";
const useForm = ({ callback }) => {
const values = useContext(MyContextTSX);
const [selected, setSelected] = useState({});
return { values, selected, setSelected };
};
export default useForm;
Register.js
const Register = () => {
const { values, selected, setSelected } = useForm({});
return (
<React.Fragment>
<Select
id={"select"} //shows error here
defaultValue="Choose"
style={{ width: 150 }}
onChange={(
value: any //what to do here ?
) => setSelected(selected)} //what to do here ?
>
{values.orgTypes.map((option: any) => (
<Option key={option.id} value={option.name}>
{option.name}
</Option>
))}
</Select>
<button onClick={() => console.log(values.orgTypes)}>Test</button>
</React.Fragment>
);
};