【发布时间】:2021-06-27 02:54:40
【问题描述】:
我正在尝试创建一个消息列表并在添加更多消息时对其进行更新,我想我遗漏了一些东西,但不知道它是什么。
App 有 2 个组件 - Messages 和 SendMessage,Messages 映射到一组 Message Component。 SenMessage 有一个表单可以更新消息状态中的数组存储。
提前感谢您的帮助。
App.js
function App() {
const [messages, setMessages] = useState([{name: 'ken', 'message': "hayyy"},{name: 'kendra', 'message': "hayyy"}])
const handleSend = (message) => {
const newMessages = [...messages];
newMessages.push(message);
setMessages(newMessages);
console.log(message)
}
return (
<div className="App">
<Messages messages={messages} />
<SendMessage onSend={handleSend}/>
</div>
);
}
export default App;
Messages.js
const Messages = (props) => {
const messages = props.messages.map((message, index) => {
return (
<Message
key={index}
name={message.name}
message={message.message}
/>
)})
return (
<div>
{messages}
</div>
)}
export default Messages;
消息.js
const Message = (props) => {
return (
<div className="Message">
<p className="message">{props.message}</p>
<p className="name">{props.name}</p>
</div>
)}
export default Message;
SendMessage.js
const SendMessage = (props) => {
const [inputMessage, setInputMessage] = useState('')
const handleSubmit = (event) => {
event.preventDefault();
props.onSend(inputMessage);
setInputMessage('')
}
const handleChange = (event) => {
setInputMessage(event.target.value)
}
return (
<div className="SendMessage">
<form onSubmit={handleSubmit}>
<input
type="text"
placeholder="enter message"
value={inputMessage}
onChange={handleChange}
/>
<button>Send</button>
</form>
</div>
)}
export default SendMessage;
【问题讨论】:
-
有什么问题?什么没有按预期工作?
-
@DrewReese 当我点击发送按钮时,新消息显示在数组中,但显示为空。
-
“出现在数组中但显示为空”是什么意思?
-
当你打电话给
handleSend时,你似乎没有发送任何message -
啊,我现在明白了,
inputMessage和message是字符串,但您希望使用name和message属性呈现消息对象。
标签: reactjs react-hooks use-state react-state react-state-management