#reactjs #jsx
Вопрос:
Допустим, у вас есть набор компонентов:
var my_array = [ <SomeComponent1 textcolor={defaultFontColor} />, <MyComponent2 textcolor={defaultFontColor} />}, <SomeComponent3 textcolor={defaultFontColor} />}, ...]
И вы хотели выполнить итерацию по массиву, но также передать реквизиты компоненту (в примере, AComponent
):
my_array.map(AComponent => {
return (
<View>
{AComponent}
</View>
)
})
Как бы я передал опору {AComponent}
в этом примере?
Комментарии:
1. Как вы создаете массив компонентов для начала? Не проще ли было бы передать туда весь необходимый реквизит?
Ответ №1:
Рассматривайте компонент как объект json
AComponent = {
props:{
prop1: "value for the prop1"
}
}
Итак, теперь вы можете передать реквизит, который вы хотите, как
my_array.map(AComponent => {
AComponent.props["newProp"] = "propValue"
return (
<View>
{AComponent}
</View>
)
})
Или, если вы хотите использовать реквизиты, переданные при перемещении компонента в массив, вы можете напрямую использовать их в методе render() компонента
Комментарии:
1. Когда я пытаюсь это сделать, я получаю следующую ошибку: «Исключение компонента: попытка назначить свойство только для чтения»
2. jsfiddle.net/7gnLv48u Попробуйте React.cloneElement создать клон вашего компонента и добавить дополнительные реквизиты
3. Спасибо за jsfiddle, очень полезно!