Javascript 当映射到一组对象时,如何高亮显示多个项目?
我试图找出如何突出显示多个被选中的对象,或者更好地调用我在代码中插入的复选标记。我的点心在这里: 具体映射如下:Javascript 当映射到一组对象时,如何高亮显示多个项目?,javascript,arrays,reactjs,react-native,Javascript,Arrays,Reactjs,React Native,我试图找出如何突出显示多个被选中的对象,或者更好地调用我在代码中插入的复选标记。我的点心在这里: 具体映射如下: const ContactRow = React.memo( ({ onPress, name, email, phone, selected }: ContactRowProps) => { return ( <TouchableHighlight onPress={onPress}> <View
const ContactRow = React.memo(
({ onPress, name, email, phone, selected }: ContactRowProps) => {
return (
<TouchableHighlight onPress={onPress}>
<View
style={{ padding: 16, flexDirection: 'row', alignItems: 'center' }}>
<Text style={{ marginRight: 16 }}>{selected ? '✅' : '⭕️'}</Text>
<View style={{ flex: 1 }}>
<Text>{name}</Text>
{name.length > 0 && (
<View>
<Text style={{ marginTop: 4, color: '#666' }}>
{email}
</Text>
<Text style={{ marginTop: 4, color: '#666' }}>
{phone}
</Text>
</View>
)}
</View>
</View>
</TouchableHighlight>
);
}
);
const ContactRow=React.memo(
({onPress、姓名、电子邮件、电话、所选内容}:ContactRowProps)=>{
返回(
{被选中?'✅' : '⭕️'}
{name}
{name.length>0&&(
{email}
{电话}
)}
);
}
);
我正在从手机中提取联系人,然后将其映射为列表。我可以选择多个项目,并在按钮中传递要呈现的号码,但我希望它们切换到复选标记或更改颜色,以帮助用户。我注意到您没有将“选定”道具传递给ContactRow
<ContactRow
onPress={ ()=> this.addSelectedContact({id: contact.name,name: contact.name, email:contact.email, phone:contact.phone}) }
name={ contact.name }
emailOrNumber={ contact.email || contact.phone }
/>
this.addSelectedContact({id:contact.name,name:contact.name,email:contact.email,phone:contact.phone})
name={contact.name}
emailOrNumber={contact.email | | contact.phone}
/>
改为
<ContactRow
onPress={ ()=> this.addSelectedContact({id: contact.name,name: contact.name, email:contact.email, phone:contact.phone}) }
name={ contact.name }
emailOrNumber={ contact.email || contact.phone }
selected={Boolean(this.state.selectedContacts.find(item => item.name === contact.name && item.phone === contact.phone)}
/>
this.addSelectedContact({id:contact.name,name:contact.name,email:contact.email,phone:contact.phone})
name={contact.name}
emailOrNumber={contact.email | | contact.phone}
selected={Boolean(this.state.selectedContacts.find(item=>item.name==contact.name&&item.phone==contact.phone)}
/>
是的,我不知道如何正确地传递和访问它。我已经从这里整理出了代码,并对其进行了修改以满足我的需要,这是我遇到的最后一个问题之一with@LoF10,刚刚更新了答案。我还没有测试,但是类似的东西你可以通过。实现了,运行良好,只是缺少一个括号,谢谢!