{title} ); } 导出默认函数App(){ const[selected,setSelected]=React.useState(newmap()); const onSelect=React.useCallback( id=>{ const newswelected=新建Map(); //newSelected.set(id,!selected.get(id)); newSelected.set(id,!selected.get(id)); 当选(新当选); }, //[选定], ); 返回( ( )} keyExtractor={item=>item.id} 外部数据={selected} /> ); } const styles=StyleSheet.create({ 容器:{ 弹性:1, }, 项目:{ 背景颜色:“红色”, 填充:20, Margin:8, marginHorizontal:10, 宽度:“50%”, 身高:20%, 弹性:2, 边界宽度:2, 边界半径:15, 边框颜色:“#39FF33”, }, 标题:{ 尺寸:14, }, });,javascript,reactjs,react-native,react-redux,react-native-android,Javascript,Reactjs,React Native,React Redux,React Native Android" /> {title} ); } 导出默认函数App(){ const[selected,setSelected]=React.useState(newmap()); const onSelect=React.useCallback( id=>{ const newswelected=新建Map(); //newSelected.set(id,!selected.get(id)); newSelected.set(id,!selected.get(id)); 当选(新当选); }, //[选定], ); 返回( ( )} keyExtractor={item=>item.id} 外部数据={selected} /> ); } const styles=StyleSheet.create({ 容器:{ 弹性:1, }, 项目:{ 背景颜色:“红色”, 填充:20, Margin:8, marginHorizontal:10, 宽度:“50%”, 身高:20%, 弹性:2, 边界宽度:2, 边界半径:15, 边框颜色:“#39FF33”, }, 标题:{ 尺寸:14, }, });,javascript,reactjs,react-native,react-redux,react-native-android,Javascript,Reactjs,React Native,React Redux,React Native Android" />

Javascript 我想将这个平面列表反应本机代码转换为类文件 从“React”导入React; 进口{ 安全区域视图, 可触摸不透明度, 平面列表, 样式表, 文本, }从“反应本机”; 常数数据=[ { id:'1', 标题:“第一项”, }, { id:'2', 标题:“第二项”, }, { id:'3', 标题:"第三项",, }, { id:'4', 标题:“第四项”, }, { id:'5', 标题:"第五项",, }, { id:'6', 标题:"第六项",, }, { id:'7', 标题:"第七项",, }, ]; 功能项({id,title,selected,onSelect}){ 返回( onSelect(id)} style={[styles.item,{backgroundColor:已选定?'#1EF09D':'white'}]} > {title} ); } 导出默认函数App(){ const[selected,setSelected]=React.useState(newmap()); const onSelect=React.useCallback( id=>{ const newswelected=新建Map(); //newSelected.set(id,!selected.get(id)); newSelected.set(id,!selected.get(id)); 当选(新当选); }, //[选定], ); 返回( ( )} keyExtractor={item=>item.id} 外部数据={selected} /> ); } const styles=StyleSheet.create({ 容器:{ 弹性:1, }, 项目:{ 背景颜色:“红色”, 填充:20, Margin:8, marginHorizontal:10, 宽度:“50%”, 身高:20%, 弹性:2, 边界宽度:2, 边界半径:15, 边框颜色:“#39FF33”, }, 标题:{ 尺寸:14, }, });

Javascript 我想将这个平面列表反应本机代码转换为类文件 从“React”导入React; 进口{ 安全区域视图, 可触摸不透明度, 平面列表, 样式表, 文本, }从“反应本机”; 常数数据=[ { id:'1', 标题:“第一项”, }, { id:'2', 标题:“第二项”, }, { id:'3', 标题:"第三项",, }, { id:'4', 标题:“第四项”, }, { id:'5', 标题:"第五项",, }, { id:'6', 标题:"第六项",, }, { id:'7', 标题:"第七项",, }, ]; 功能项({id,title,selected,onSelect}){ 返回( onSelect(id)} style={[styles.item,{backgroundColor:已选定?'#1EF09D':'white'}]} > {title} ); } 导出默认函数App(){ const[selected,setSelected]=React.useState(newmap()); const onSelect=React.useCallback( id=>{ const newswelected=新建Map(); //newSelected.set(id,!selected.get(id)); newSelected.set(id,!selected.get(id)); 当选(新当选); }, //[选定], ); 返回( ( )} keyExtractor={item=>item.id} 外部数据={selected} /> ); } const styles=StyleSheet.create({ 容器:{ 弹性:1, }, 项目:{ 背景颜色:“红色”, 填充:20, Margin:8, marginHorizontal:10, 宽度:“50%”, 身高:20%, 弹性:2, 边界宽度:2, 边界半径:15, 边框颜色:“#39FF33”, }, 标题:{ 尺寸:14, }, });,javascript,reactjs,react-native,react-redux,react-native-android,Javascript,Reactjs,React Native,React Redux,React Native Android,如何在类文件中转换此代码。此代码处于运行状态,您可以在snack.expo.io或您自己的pc上运行。当我尝试转换此代码时,我面临minirect问题以及更多问题 当我试图转换代码时,我也面临hooks错误。这是转换为类的本机应用程序 import React from 'react'; import { SafeAreaView, TouchableOpacity, FlatList, StyleSheet, Text, } from 'react-native'; co

如何在类文件中转换此代码。此代码处于运行状态,您可以在snack.expo.io或您自己的pc上运行。当我尝试转换此代码时,我面临minirect问题以及更多问题


当我试图转换代码时,我也面临hooks错误。

这是转换为类的本机应用程序

import React from 'react';
import {
  SafeAreaView,
  TouchableOpacity,
  FlatList,
  StyleSheet,
  Text,
} from 'react-native';

const DATA = [
  {
    id: '1',
    title: 'First Item',
  },
  {
    id: '2',
    title: 'Second Item',
  },
  {
    id: '3',
    title: 'Third Item',
  },
  {
    id: '4',
    title: 'Fourth Item',
  },
  {
    id: '5',
    title: 'Fifth Item',
  },
  {
    id: '6',
    title: 'Sixth Item',
  },
  {
    id: '7',
    title: 'Seventh Item',
  },
];


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

export default function App() {
  const [selected, setSelected] = React.useState(new Map());


  const onSelect = React.useCallback(
    id => {

      const newSelected = new Map();
     // newSelected.set(id, !selected.get(id));
      newSelected.set(id, !selected.get(id));
      setSelected(newSelected);

    },
   // [selected],
  );

  return (
    <SafeAreaView style={styles.container}>
      <FlatList
        horizontal
        initialScrollIndex={DATA.length - 1}
        data={DATA}
        renderItem={({item}) => (
          <Item
            id={item.id}
            title={item.title}
            selected={!!selected.get(item.id)} **im facing the issue at this point after converting this into a class file**
            onSelect={onSelect}
          />
        )}
        keyExtractor={item => item.id}
        extraData={selected}
      />
    </SafeAreaView>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
  },
  item: {
    backgroundColor: 'red',
    padding: 20,
    marginVertical: 8,
    marginHorizontal: 10,
    width: '50%',
    height: '20%',
    flex: 2,
    borderWidth: 2,
    borderRadius: 15,

    borderColor: '#39FF33',
  },
  title: {
    fontSize: 14,
  },
});

您想附加您尝试的代码吗?首先感谢您尝试帮助我。我想把这些函数转换成一个类。为此,我可以在文件中使用构造函数和状态。。我需要这些功能,这段代码是以类的形式执行的。谢谢上面的代码是我所有的练习工作。你能告诉我,我怎样才能使我的最后一个(第七个)项目成为默认选择的项目,这样每当我启动我的应用程序时,它都会自动选择。???pleaseee@account,我更新了答案。这样行吗?选中:新建映射([[DATA.length-1,true]]),表示是否要自动选中最后一个框。不通过提供id号进行硬编码。我刚刚尝试了这个,但它不正确(我的代码)…@account,我更新了答案。关于你的评论。因为
DATA.length-1
是数字的类型,而id是字符串的类型(比如
'7'
)。
import React, { Component } from 'react';
import {
  SafeAreaView,
  TouchableOpacity,
  FlatList,
  StyleSheet,
  Text,
} from 'react-native';

const DATA = [
  {
    id: '1',
    title: 'First Item',
  },
  {
    id: '2',
    title: 'Second Item',
  },
  {
    id: '3',
    title: 'Third Item',
  },
  {
    id: '4',
    title: 'Fourth Item',
  },
  {
    id: '5',
    title: 'Fifth Item',
  },
  {
    id: '6',
    title: 'Sixth Item',
  },
  {
    id: '7',
    title: 'Seventh Item',
  },
];

class Item extends Component {
  constructor(props) {
    super(props);
  }

  render() {
    const {id, title, selected, onSelect} = this.props;
    return (
      <TouchableOpacity
        onPress={() => onSelect(id)}
      style={[styles.item, {backgroundColor: selected ? '#1EF09D' : 'white'}]}
      >
        <Text style={styles.title}>{title}</Text>
      </TouchableOpacity>
    );
  }
}

class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      selected: new Map(),
    };
  }

  onSelect = id => {
    const { selected } = this.state;
    var newSelected = new Map();
    newSelected.set(id, !selected.get(id));
    this.setState({selected: newSelected});
  };

  render() {
    const { selected } = this.state;
    return (
      <SafeAreaView style={styles.container}>
        <FlatList
          horizontal
          initialScrollIndex={DATA.length - 1}
          data={DATA}
          renderItem={({item}) => (
            <Item
              id={item.id}
              title={item.title}
              selected={!!selected.get(item.id)}
              onSelect={this.onSelect}
            />
          )}
          keyExtractor={item => item.id}
          extraData={selected}
        />
      </SafeAreaView>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
  },
  item: {
    backgroundColor: 'red',
    padding: 20,
    marginVertical: 8,
    marginHorizontal: 10,
    width: '50%',
    height: '20%',
    flex: 2,
    borderWidth: 2,
    borderRadius: 15,

    borderColor: '#39FF33',
  },
  title: {
    fontSize: 14,
  },
});

export default App;
constructor(props) {
    super(props);
    this.state = {
      selected: new Map([[DATA[DATA.length - 1].id, true]]), // last item selected
    };
  }