Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 如何更改平面列表可选项的颜色_React Native - Fatal编程技术网

React native 如何更改平面列表可选项的颜色

React native 如何更改平面列表可选项的颜色,react-native,React Native,在平面列表中选择项目时,如何更改平面列表项目的颜色 我已经尝试了react本机文档关于平面列表,但我对如何在代码中正确使用该文档有疑问 function Item({ id, title, selected, onSelect }) { return ( <TouchableOpacity onPress={() => onSelect(id)} style={[ styles.item, { backgroundC

在平面列表中选择项目时,如何更改平面列表项目的颜色

我已经尝试了react本机文档关于平面列表,但我对如何在代码中正确使用该文档有疑问

function Item({ id, title, selected, onSelect }) {
  return (
    <TouchableOpacity
      onPress={() => onSelect(id)}
      style={[
        styles.item,
        { backgroundColor: selected ? '#6e3b6e' : '#f9c2ff' },
      ]}>
      <Text style={styles.title}>{title}</Text>
    </TouchableOpacity>
  );
}

class ApplyLeaveScreen extends Component {
const [selected, setSelected] = React.useState(new Map());
  const onSelect = React.useCallback(
    id => {
      const newSelected = new Map(selected);
      newSelected.set(id, !selected.get(id));
      setSelected(newSelected);
    },
    [selected],
  );

  render() {
    return (
      <ScrollView>
            <View style={styles.content}>
              <FlatList contentContainerStyle ={{justifyContent:'center', margin:5}}
                renderItem={({ item }) => 
                <Item id={item.id} title={item.title} 
                selected={!!selected.get(item.id)}
                onSelect={onSelect}/>}
                keyExtractor={item => item.id}
                id={item.id}
              />
          </View>
</ScrollView>          
}


功能项({id,title,selected,onSelect}){
返回(
onSelect(id)}
风格={[
styles.item,
{背景色:选定?'#6e3b6e':'#f9c2ff'},
]}>
{title}
);
}
类ApplyLeaveScreen扩展组件{
const[selected,setSelected]=React.useState(newmap());
const onSelect=React.useCallback(
id=>{
const newSelected=新地图(已选定);
newSelected.set(id,!selected.get(id));
当选(新当选);
},
[选定],
);
render(){
返回(
}
keyExtractor={item=>item.id}
id={item.id}
/>
}

您可以分享您的尝试吗?您尝试了什么?我编辑了问题您是否在没有useCallback钩子的情况下尝试了它?我认为这实际上并不能提高您的性能,因为每次按下按钮调用回调时,输入和输出值都会发生变化。您是否可以删除
console.log(已选)
测试您的状态是否真的按预期更新?