【问题标题】:How to properly call a function from a functional component in React Native?如何从 React Native 中的功能组件正确调用函数?
【发布时间】:2021-03-26 05:49:23
【问题描述】:

可能是一个新手问题,但我是 React Native 的初学者,很难理解如何从函数组件调用我的 return 方法中的函数。如果我在 searchUser 函数中返回任何内容,它不会在我的屏幕上输出。您能帮我理解如何正确调用此函数并返回其中的组件吗?我显然有一个更大的功能,我试图通过让用户使用此功能进行搜索来完成,但我至少想了解如何首先正确调用一个函数并将其中的组件输出到我的屏幕上。

  const Map = ({navigation}) => {

    //used to search 
    const searchUser = async () => {
        return <Text> hello </Text>
    }

  return (
      <Container>
        <ScrollView>
            <Text style = {styles.titleStyle}> Map </Text>
            <List>
               {searchUser()}
            </List>
        </ScrollView>
      </Container>
  );
}

【问题讨论】:

    标签: react-native


    【解决方案1】:

    您的函数将不渲染任何内容,因为它返回一个 Promise 而不是一个组件。

    您需要使用诸如useStateuseEffect 之类的钩子来实现您的searchUser。

    import React, {useState, useEffect} from 'react'
     
      //used to search 
        const searchUser = async () => {
            return  {} // fetch data
        }
     
     const Map = ({navigation}) => {
    
    function MyComponent({data}) {
    
      return(
        <Text>{data}</Texte>
      )
    }
    
      const [result, setResult] = useState({})
      
      useEffect( async () => { // async declaration because we use await
      
      // call all your fetch
      const data = await searchUser()
      
      setResult(data);
      
      });
       
    
      return (
          <Container>
            <ScrollView>
                <Text style = {styles.titleStyle}> Map </Text>
                <MyComponent data={result} /> // call your component to show
            </ScrollView>
          </Container>
      );
    }

    【讨论】:

    • 我收到错误错误:必须在 组件中呈现文本字符串?这是因为我在 searchUser 函数中返回了一个数组吗?
    • 这个错误意味着你的代码中有一些字符串在 应答器之外。
    • 我想出了如何让它成为一个 List 组件!我还必须将 useEffect 更改为最后有一个空数组并将异步函数放入其中并在那里调用我的函数而不是作为参数(我的代码不喜欢你的方式)。非常感谢您的帮助,我终于明白了功能组件如何与功能调用和返回组件一起工作。这对我很有帮助。
    猜你喜欢
    • 2021-07-15
    • 1970-01-01
    • 2021-08-16
    • 2020-05-30
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 2021-06-14
    • 2019-12-16
    相关资源
    最近更新 更多