Каков способ преобразовать компонент моего класса в функциональный компонент?

#javascript #reactjs #react-native #react-hooks

#javascript #reactjs #react-native #реагирующие хуки

Вопрос:

Каков способ преобразовать компонент моего класса в функциональный компонент? в моем примере я пытаюсь отобразить панель поиска, и мне нужно сделать это с помощью компонента функции вместо компонента класса.

 import React, { useState} from 'react';
import { StyleSheet, View } from 'react-native';
import { Table, Row, Rows } from 'react-native-table-component';
 
const ExampleOne = (props) =>{ 
      const [tableHead, settableHead] = useState(['Head', 'Head2', 'Head3', 'Head4'])
      const [tableData,settableData] = useState([
        ['1', '2', '3', '4'],
        ['a', 'b', 'c', 'd'],
        ['1', '2', '3', '456n789'],
        ['a', 'b', 'c', 'd']
      ])
  
    return (
      <View style={styles.container}>
        <Table borderStyle={{borderWidth: 2, borderColor: '#c8e1ff'}}>
          <Row data={tableHead} style={styles.head} textStyle={styles.text}/>
          <Rows data={tableData} textStyle={styles.text}/>
        </Table>
      </View>
    ) 

export default ExampleOne 
 
const styles = StyleSheet.create({
  container: { flex: 1, padding: 16, paddingTop: 30, backgroundColor: '#fff' },
  head: { height: 40, backgroundColor: '#f1f8ff' },
  text: { margin: 6 }
});
  

Комментарии:

1. Можете ли вы более конкретно рассказать о том, что вы хотите знать? Вы ищете общие рекомендации или просто кого-то, кто сделает работу за вас?

Ответ №1:

Вы используете React Hook и меняете свой компонент на основе класса на функциональный компонент

 import React, { useState } from "react";
import { SearchBar } from "react-native-elements";

const App = () => {
  const [search, setSearch] = useState("");

  const updateSearch = (search) => {
    setSearch(search);
  };

  return (
    <SearchBar
      placeholder="Type Here..."
      onChangeText={(i) => updateSearch(i)}
      value={search}
    />
  );
};

export default App;
  

Ответ №2:

Вероятно, вы можете попробовать следующее:

 import React, { useState } from 'react';
import { SearchBar } from 'react-native-elements';

const App = () => 
  const [search, setSearch] = useState({
     text: ''
  });

  return {
    return (
      <SearchBar
        placeholder="Type Here..."
        onChangeText={ (search) => setSearch({ text: search }) }
        value={search.text}
      />
    );
  }
}

export default App;
  

Я предлагаю более подробно ознакомиться со следующей документацией: Использование перехвата состояния

1 дополнение:

Я бы рассмотрел возможность использования const [search, setSearch] = useState('') только для вашего состояния поиска, потому что оно короче. Указанным способом вы можете хранить больше информации в search состоянии, но вам решать, что лучше подходит для вашей ситуации.

Комментарии:

1. Теперь у вас есть совершенно другой вопрос, чем исходный, вероятно, проще задать новый вопрос.

Ответ №3:

 import React, { useState } from 'react';
import { SearchBar } from 'react-native-elements';


export default App = () => {
    const [search, setSearch ] = useState('');

    return(
        <SearchBar
        placeholder="Type Here..."
        onChangeText={ search => setSearch(search) }
        value={search}
         />
    );
}