reactjs - react native : Using Hooks in Flatlist

标签 reactjs react-native

我正在尝试渲染一个FlatList:

  <FlatList
    removeClippedSubviews
    numColumns={1}
    {...{ data }}
    extraData={this.state}
    renderItem={object => renderItem(object)}
  />

当然,它与下面的函数配合得很好。

function renderItem(object) {
  return <Text>Test</Text>;
}

但是,当添加 React Hooks 时,这样:

function renderItem(object) {
  const [foo, setFoo] = useState("bar");
  return <Text>{foo}</Text>;
}

RN 返回:

Hooks can only be called inside the body of a function component.

Hook 在代码库的其他地方工作,因此这不是包不匹配问题。 非常感谢任何帮助。

最佳答案

您不能在功能组件内调用钩子(Hook)。您可以将函数转换为函数组件

  <FlatList
    removeClippedSubviews
    numColumns={1}
    {...{ data }}
    extraData={this.state}
    renderItem={object => <TextComponent item={object} />}
  />


function TextComponent ({item}) {
  const [foo, setFoo] = useState("bar");
  return <Text>{foo}</Text>;
}

关于reactjs - react native : Using Hooks in Flatlist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55256985/

相关文章:

css - Reactjs Bootstrap 网格

python - 当从 fetch 发送请求时, session 消失

javascript - 带有reactjs和bootstrap的下拉菜单

javascript - 渲染不同组件时无法更新组件 (`App` )

android - 如何在 react-native-navigation 中从堆栈完成 SplashScreen

javascript - 在项目触发自身删除后更新列表

javascript - react native Firebase图像上传错误404

xcode - 在 React Native iOS 应用程序中更改端口

javascript - 在 ios 键盘上使用 Detox 单击 'Search' 和 'Enter' 按钮

react-native:在开发中同时在两个设备上热加载