如何在react native中访问另一个函数内的常量?

5uzkadbs  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(263)

我有一个文件叫 home.js 看起来是这样的:

import React, { useState } from 'react'
import { View, Text, FlatList, Card, TouchableOpacity } from 'react-native'

export const addProject = (flowerbed) => {
flowerbed.key = Math.random().toString()
setFlowerbed((currentFlowerbeds) => {
return [flowerbed, ...currentFlowerbeds]
})
setModalOpen(false)
}

export default function HomeScreen() {

const [flowerbeds, setFlowerbed] = useState(false);   

return (
  <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center'}}>
    <FlatList data={flowerbeds} renderItem={({ item }) => (
    <TouchableOpacity >
      <Card>
        <Text>{ item.title }</Text>
      </Card>
    </TouchableOpacity>
  )} />
  </View>
)
}

在功能上 addProject 我需要调用函数 setFlowerbed 哪个在里面 HomeScreen ,但我得到一个错误:找不到变量:setflowerbed。我不能把函数 addProject 在…内 HomeScreen 因为我需要在另一个文件中访问它:

import { addProject } from './screens/home';

你能帮我修复这个错误吗?提前谢谢。

de90aj5v

de90aj5v1#

您需要传递回调函数以使用所选的函数,与模态函数相同

export const addProject = (flowerbed, flowerbedCallback, modalCallback) => {
  flowerbed.key = Math.random().toString()
  flowerbedCallback((currentFlowerbeds) => {
    return [flowerbed, ...currentFlowerbeds]
  })
  modalCallback(false)
}
/**You need to invoce the method like this, 
two parameters: setFlowerbed & setModalOpen, are functions but are not called
so you will can execute inside addProject function */
addProject(flowerbedExample, setFlowerbed, setModalOpen);

如果您将函数作为参数传递,那么当您调用它时,您是否将方法传递给他的作用域,因为您传递的是函数的引用,所以当您执行参数回调时,您将执行引用

相关问题