Я лично не знал, как сформулировать этот вопрос. Проблема, с которой я столкнулся, заключается в том, что я передаю хук setState
в дочерний компонент, но это не всегда одно и то же действие setState
, если это имеет смысл.
Например, допустим, у меня есть setState(a)
который ожидает параметр string
, и тот же дочерний компонент может в конечном итоге получить setState(b)
, который ожидает параметр number
... теперь на самом деле параметры, которые ожидает дочерний элемент, являются разными типами дженерики, если это имеет смысл.
Итак, для простоты я бы создал компонент, который ожидает одну опору, которая будет включать либо setState(a)
, либо setState(b)
. Теперь я получаю сообщение об ошибке, в котором говорится, что тип React.Dispatch<React.SetStateAction<string | number | undefined>>
не может быть назначен типу React.Dispatch<React.SetStateAction<string | undefined>>
. Как мне установить его, чтобы он мог ожидать либо string
, number
, либо undefined
. Понимая, что в некоторых ситуациях число даже не является для него вариантом, или строка даже не является вариантом для его принятия в качестве параметра. Я новичок в Typescript и пытаюсь понять, как лучше всего работать с ним и React одновременно! (Я тоже новичок в хуках!)
Заранее всем спасибо !!
Изменить: лучший пример
const [a, setA] = useState<string | undefined>();
const [b, setB] = useState<number | undefined>();
if (something) {
return (
<CustomChildComponent useThisState={setA}/>
)
} else if (somethingElse) {
return (
<CustomChildComponent useThisState={setB}/>
)
}
Ошибка в CustomChildComponent
при передаче в этой опоре скажет:
(JSX attribute) useThisState: React.Dispatch<React.SetStateAction<string | number | undefined>>
Type 'Dispatch<SetStateAction<string | undefined>>' is not assignable to type 'Dispatch<SetStateAction<string | number | undefined>>'.
Надеюсь, это немного проясняет проблему!