Javascript 带有挂钩的ReactJS/Chatbot
我有一个静态聊天机器人,可以通过以下方式显示消息: 你好。 像这样的img:Javascript 带有挂钩的ReactJS/Chatbot,javascript,reactjs,chatbot,Javascript,Reactjs,Chatbot,我有一个静态聊天机器人,可以通过以下方式显示消息: 你好。 像这样的img: const ChatBot=()=>{ 返回( 你好 你好 ); }; 这是我的聊天机器人: function ChatMessage(props) { return ( <Styled.ChatMessage bot={props.bot}>{props.children}</Styled.ChatMessage> ); } ChatMessage.defaultProp
const ChatBot=()=>{
返回(
你好
你好
);
};
这是我的聊天机器人:
function ChatMessage(props) {
return (
<Styled.ChatMessage bot={props.bot}>{props.children}</Styled.ChatMessage>
);
}
ChatMessage.defaultProps = {
bot: false,
};
const Chat = props => {
console.log(props.children);
return (
<Styled.ChatBox>
<Styled.ChatHeader />
<Styled.ChatLog>{props.children}</Styled.ChatLog>
<Styled.ChatInput>
<textarea placeholder="aaaaa ..." rows={4} />
<button>Send</button>
</Styled.ChatInput>
</Styled.ChatBox>
);
};
功能聊天信息(道具){
返回(
{props.children}
);
}
ChatMessage.defaultProps={
机器人:错,
};
const Chat=props=>{
console.log(props.children);
返回(
{props.children}
发送
);
};
但我想知道如何使其动态化,以便根据文本区域中键入的内容相应地显示消息,并因此调用一些函数来检查键入的字符串并返回响应。但我不知道如何解决这个问题。基本上,我需要显示用户在聊天中键入的消息,并将该消息发送到我的后端(或前端的某些功能),然后该功能将向我发送响应
例如:
其次,在您的父级中,您应该将消息
状态连接到redux(或者简单地在组件中加载消息并将其保存在消息
状态),然后将其作为道具传递给上述组件
最后,提交新消息后,可以调用父级传递的sendMessage
prop,它调用API发送消息。此外,您还需要记住在成功将当前消息列表发送到服务器时更新它,以便您的本地状态是最新的
其次,在您的父级中,您应该将消息
状态连接到redux(或者简单地在组件中加载消息并将其保存在消息
状态),然后将其作为道具传递给上述组件
最后,提交新消息后,可以调用父级传递的sendMessage
prop,它调用API发送消息。此外,您还需要记住在成功发送到服务器后更新当前邮件列表,以便您的本地状态是最新的。在这种情况下,您必须将邮件数组保存在状态变量中,并在按下按钮时动态添加邮件。您可以执行以下操作:
import React, { useState } from 'react'
const YourComponent = () => {
const [messages, setMessages] = useState([])
const [text, setText] = useState('')
const handleClick = () => {
setMessages(prevMessages => [...prevMessages, text]);
setText('')
}
return (
<>
<textarea onChange={e => setText(e.target.value)}>{text}</textarea>
<button onClick={handleClick}>Submit</button>
</>
)
}
import React,{useState}来自“React”
constyourcomponent=()=>{
const[messages,setMessages]=useState([])
const[text,setText]=useState(“”)
常量handleClick=()=>{
setMessages(prevMessages=>[…prevMessages,text]);
setText(“”)
}
返回(
setText(e.target.value)}>{text}
提交
)
}
这只是一个示例,您可以将其映射到您的用例中。在这种情况下,您必须将消息数组保持在状态变量中,并在按下按钮时动态添加消息。您可以执行以下操作:
import React, { useState } from 'react'
const YourComponent = () => {
const [messages, setMessages] = useState([])
const [text, setText] = useState('')
const handleClick = () => {
setMessages(prevMessages => [...prevMessages, text]);
setText('')
}
return (
<>
<textarea onChange={e => setText(e.target.value)}>{text}</textarea>
<button onClick={handleClick}>Submit</button>
</>
)
}
import React,{useState}来自“React”
constyourcomponent=()=>{
const[messages,setMessages]=useState([])
const[text,setText]=useState(“”)
常量handleClick=()=>{
setMessages(prevMessages=>[…prevMessages,text]);
setText(“”)
}
返回(
setText(e.target.value)}>{text}
提交
)
}
这只是一个例子,你可以把它映射到你的用例上。oops我喜欢这个解决方案,你能给我一个例子,说明我将如何和爸爸一起做吗?现在基本上是一个按钮,用useState保存消息,但是我如何将其发送到我的组件聊天?将其作为道具发送,如下所示:我无法想象如何使用chat.js和index.js以及挂钩来实现这一点,我有点困惑。你能给你父亲树立一个榜样吗?哎呀,我喜欢这个解决方案。你能给我举个例子,说明我会如何和爸爸一起做吗?现在基本上是一个按钮,用useState保存消息,但是我如何将其发送到我的组件聊天?将其作为道具发送,如下所示:我无法想象如何使用chat.js和index.js以及挂钩来实现这一点,我有点困惑。你能为你父亲树立一个榜样吗?你好,朋友,谢谢你。你认为最好的选择是使用redux来存储这些消息吗?因为我将把它们发送到后端,并且我会收到响应吗?我理解这一部分,但我不确定如何完成这一部分:const ChatBot=()=>{return(Hi.Hello.);};我试过了,但效果不太好。文本没有出现在我的组件日志中。你好,朋友,谢谢。你认为最好的选择是使用redux来存储这些消息吗?因为我将把它们发送到后端,并且我会收到响应吗?我理解这一部分,但我不确定如何完成这一部分:const ChatBot=()=>{return(Hi.Hello.);};我试过了,但效果不太好。文本没有出现在我的组件日志中
const ChatBot = ({ messages }) => {
return (
<Chat>
{messages.map(message => <ChatMessage bot={message.fromBot}>{message.text}</ChatMessage>)}
</Chat>
);
};
import React, { useState } from 'react'
const YourComponent = () => {
const [messages, setMessages] = useState([])
const [text, setText] = useState('')
const handleClick = () => {
setMessages(prevMessages => [...prevMessages, text]);
setText('')
}
return (
<>
<textarea onChange={e => setText(e.target.value)}>{text}</textarea>
<button onClick={handleClick}>Submit</button>
</>
)
}