如何在React中实现消息标记和搜索?
{markedMessages.map(message => (
);
};
```
2. 搜索框组件
搜索框组件用于接收用户输入的搜索关键字,并触发搜索事件。该组件可以包含一个简单的输入框和搜索按钮。
```jsx
import React, { useState } from 'react';
const SearchBox = ({ onSearch }) => {
const [keyword, setKeyword] = useState('');
const handleSearch = () => {
onSearch(keyword);
};
return (
{message.content}
))}
setKeyword(e.target.value)}
placeholder="请输入搜索关键字"
/>
);
};
```
3. 标记组件
标记组件用于标记或取消标记消息。该组件可以包含一个复选框和相应的提示信息。
```jsx
import React from 'react';
const Mark = ({ message, onToggleMark }) => {
return (
onToggleMark(message.id)}
/>
{message.isMarked ? '已标记' : '未标记'}
);
};
```
二、状态管理
在React中,状态管理可以使用Redux、MobX或Context API等库来实现。以下使用Context API进行状态管理。
1. 创建Context
```jsx
import React, { createContext, useState, useContext } from 'react';
const MessageContext = createContext();
export const MessageProvider = ({ children }) => {
const [messages, setMessages] = useState([]);
const addMessage = message => {
setMessages([...messages, message]);
};
const toggleMark = id => {
const newMessages = messages.map(message =>
message.id === id ? { ...message, isMarked: !message.isMarked } : message
);
setMessages(newMessages);
};
return (
{message.content}
))}
猜你喜欢:视频通话sdk