質問編集履歴
3
typo修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -50,7 +50,7 @@
|
|
50
50
|
私が考えたワークアラウンドとしては
|
51
51
|
```Child.tsx
|
52
52
|
type ChildComponent<T> = (props: T & {setIsOpen?: React.Dispatch<React.SetStateAction<boolean>>} => JSX.Element
|
53
|
-
const ChildChildComponent<PropsWithoutSeTIsOpen> = (props) => {
|
53
|
+
const Child: ChildComponent<PropsWithoutSeTIsOpen> = (props) => {
|
54
54
|
return (
|
55
55
|
<>
|
56
56
|
<button onClick={props.setIsOpen!(true)}>開く</button>;
|
2
ワークアラウンド追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -43,3 +43,19 @@
|
|
43
43
|
|
44
44
|
実装時は`Parent`コンポネントを大量に使用したいと考えています。
|
45
45
|
よって可能であれば、子コンポネント側で都度`setIsOpen`あたりをいじらなくてもよいような方法を模索しているのですが、良いアイデアないでしょうか?
|
46
|
+
|
47
|
+
---
|
48
|
+
追記
|
49
|
+
|
50
|
+
私が考えたワークアラウンドとしては
|
51
|
+
```Child.tsx
|
52
|
+
type ChildComponent<T> = (props: T & {setIsOpen?: React.Dispatch<React.SetStateAction<boolean>>} => JSX.Element
|
53
|
+
const ChildChildComponent<PropsWithoutSeTIsOpen> = (props) => {
|
54
|
+
return (
|
55
|
+
<>
|
56
|
+
<button onClick={props.setIsOpen!(true)}>開く</button>;
|
57
|
+
<button onClick={props.setIsOpen!(false)}>閉じる</button>;
|
58
|
+
</>
|
59
|
+
};
|
60
|
+
```
|
61
|
+
とすることで型エラーも解消し、機能もしたのですがいかんせん`props.setIsOpen!`が気持ち悪いなというところです。
|
1
背景の補足
test
CHANGED
File without changes
|
test
CHANGED
@@ -40,3 +40,6 @@
|
|
40
40
|
しかし、`ChildProps`型を上記コードのように指定すると、`App.tsx`で`<Child />`に`setIsOpen`が渡されていないためエラーとなってしまいます。
|
41
41
|
|
42
42
|
どのような型定義をすればよいでしょうか?もしくは実装パターンが間違っているのでしょうか?
|
43
|
+
|
44
|
+
実装時は`Parent`コンポネントを大量に使用したいと考えています。
|
45
|
+
よって可能であれば、子コンポネント側で都度`setIsOpen`あたりをいじらなくてもよいような方法を模索しているのですが、良いアイデアないでしょうか?
|