I have a bunch of components that looks like this:
<View>
<Component
containerStyle={{ color: 'blue' }}
id={"test1"}
onPress={onPress1}/>
<Component
containerStyle={{ color: 'blue' }}
id={"test2"}
onPress={onPress2}/>
<Component
containerStyle={{ color: 'blue' }}
id={"test3"}
onPress={onPress3}/>
...
</View>
How can I create this cleanly in code without manually making a long list of these components?
CodePudding user response:
Please check: (https://reactjs.org/docs/lists-and-keys.html). You can use map method of Arrays:
...
const elementsProps = [
{
containerStyle: {color: 'blue'},
id: 'test1',
onPress: onPress1
},
{
containerStyle: {color: 'blue'},
id: 'test2',
onPress: onPress2
},
{
containerStyle: {color: 'blue'},
id: 'test3',
onPress: onPress3
},
];
return (
<View>
{elementsProps.map((element) => (<Component key={element.id} {...element} />)}
</View>
);
You have to pass additional property: key, which is required in order to optimise list. If elements change their order, key property helps to move elements in DOM rather than rerendering them from scratch. That's why it's not recommended to use index as a key, as it will change for the element when order is changed.
