当在组件中返回以下内容以渲染卡片时,您会在何处放置过滤器?

    {state.messages.map((message, index) => (
        <div key={index}>
            <Center>
            <Box
                maxW={'850px'}
                w={'full'}
                boxShadow={'2xl'}
                rounded={'md'}
                p={6}
                overflow={'hidden'}
                >
                    <Flex>
                    <h4>UserID: {message.id}</h4>
                    <Spacer/>
                    <Button onClick={'test'} colorScheme='teal' variant='solid' >
                    <DeleteIcon/>
                    </Button>
                    </Flex>
                    <h3>User(email for now): {message.user} </h3>
                    <h2 >message: {message.message}</h2>
                    <p>Date: {message.createdAt}</p>
                </Box>
            </Center>
        <Container height={50}/>
        </div>   
        ))}

我的第一个 idea 是

{state.messages.filter((message) => message.id).map((message, index) => (... 

this doesn't return anything but a regular map so not it probably just an example

...}

所以希望有人能解释在返回的jsx中过滤映射的最佳实践是什么.你能做到我想做的事情而不出现调用堆栈错误吗?

编辑:有人说这段代码是正确的,所以我会在早上修复它并更新/关闭它.如果有人想确认一下,太感谢了

推荐答案

你的方法是最好的方法.

首先,filtermap是最清晰的函数.

其次,最好在map之前使用filter,原因有二:

  • 通过在映射之前删除不需要的项,可以将计算保存为不映射不需要的项.
  • map函数返回JSX.Elements,这比state.messages中的对象更难应用过滤器.

Reactjs相关问答推荐

无法覆盖MUI工具栏上的左右填充,除非使用!重要

无法在列表中看到文本

可选链和useState挂钩

Reactjs中的chartjs和reaction-chartjs-2的问题

Reaction路由DOM v6不包含上下文(Supabase)

使用自动播放的视频组件呈现登录页面时出现JEST测试错误

无法找出状态正在被更改的位置

shadcn输入+窗体+Zod;一个部件正在改变要被控制的不受控制的输入;

如何使用 React 获取表单中的所有值?

我从 S3 存储桶下载图像时收到错误

Firebase查询返回随机用户数据,而不是过滤后的用户数据

无法从子组件传递数据到父组件

React Router v6 路径中的符号

如何防止开发人员使用 ESLint 在 React 项目中使用特定的钩子?

为什么刷新页面时我的localStorage PET值变成空字符串?

如何通过 React JS 中的映射将新元素添加到对象数据数组中

Reactjs 表单未反映提交时的更改

哪个是创建 React 应用程序的更好方法?

React-Native PDF 注释

为什么我收到 Uncaught TypeError: Cannot read properties of null (reading 'add') on deployment?