簡體   English   中英

傳遞具有動態名稱的道具以響應子組件

[英]Pass prop that has a dynamic name in react to child component

如果我有一個具有動態名稱的道具,請說myProp[regNo] ,其中regNo可以是一系列數字,(在 react Dev 工具中,它可以呈現為myProp5645262我如何將該道具傳遞給孩子?

<ChildComponent {...props} />

您可以通過this.propsprops訪問它,具體取決於您使用的是類組件還是鈎子。

使用Object.keys(props)獲取屬性名稱列表。 然后您將能夠訪問該屬性。

這是一個使用鈎子的虛擬示例。

const MyComponent = (props) => {
  const keys = Object.keys(props); // ['myProp12345', 'myProp23456', 'apple']
  const myProps = keys.filter(name => name.startsWith('myProp')) // ['myProp12345', 'myProp23456']

  // Do whatever you want here to map your values

  const myValues = myProps.map(propName => ({
    name: propName,
    value: props[propName]
  })) // [{ name: 'myProp12345', value: 'a' }, { name: 'myProp23456', value: 'b' }]
  

  return (
    <Child myValues={myValues} />
  )
}

// ...

<MyComponent myProp12345='a' myProp23456='b' apple='c' />

編輯:再次閱讀您的問題后,您似乎想按原樣將這些道具傳遞給您的孩子。 如果是這樣的話:

const MyComponent = (props) => {
  const keys = Object.keys(props); // ['myProp12345', 'myProp23456', 'apple']
  const myPropsMap = keys.reduce((map, key) => ({
    ...map,
    [key]: props[key]
  }), {}) // {myProp12345: 'a', myProp23456: 'b'}

  // Here both of the myPropXXX are passed to this child.
  return (
    <Child {...myPropsMap} />
  )
}

// ...

<MyComponent myProp12345='a' myProp23456='b' apple='c' />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM