Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有挂钩的ReactJS/Chatbot_Javascript_Reactjs_Chatbot - Fatal编程技术网

Javascript 带有挂钩的ReactJS/Chatbot

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

我有一个静态聊天机器人,可以通过以下方式显示消息:

你好。

像这样的img:

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>
    </>
  )
}