有效的輸入方法:條件渲染控制指南
P粉550257856
P粉550257856 2023-08-15 18:18:12
0
2
528
<p>我正在嘗試輸入條件渲染,但是它報錯了:<code>Element implicitly has an 'any' type because expression of type 'number' can't be used to index type 'types'. No index signature' can't be used to index type 'types'. No index signature with a parameter of type 'number' was found on type 'types'.</code> 當所有內容都是"any"時,渲染是有效的。 </p> <pre class="brush:php;toolbar:false;">interface types { '0': JSX.Element; '1': JSX.Element; '2': JSX.Element; } export default function Economy(props: any) { const [step, setStep] = useState(0) const render = () => { const component: types = { '0': <Home />, '1': <Create />, '2': <Detail />, } return component[step] } return ( {render()} )</pre> <p>有人能幫我理解如何為這個條件渲染添加類型嗎? </p> <p>我需要理解如何為這個條件渲染添加類型</p>
P粉550257856
P粉550257856

全部回覆(2)
P粉823268006

當對一個物件進行索引時,你需要使用 keyof 運算子。 來自 TypeScript 文件:

interface types {
  '0': JSX.Element;
  '1': JSX.Element;
  '2': JSX.Element;
}

export default function Economy(props: any) {
  const [step, setStep] = useState<keyof types>("0")

  const render = () => {
    const component: types = {
      '0': <Home />,
      '1': <Create />,
      '2': <Detail />,
    }
    return component[step]
  }
return (
   {render()}
)
P粉008829791

您的stepnumber類型,不能用於索引types,因為types只有1,2, 3。所以您可以手動將step設定為keyof types

const [step, setStep] = useState<keyof types>(0)

由於step是一個數字,您還需要鍵:

interface types {
  0: JSX.Element;
  1: JSX.Element;
  2: JSX.Element;
}
 const component: types = {
      0: <Home />,
      1: <Create />,
      2: <Detail />,
    }
 return component[step] // 没有错误
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板