反应-如何设置“来自我的消息”

昔可

我有2个州:

const [formData, setFormData] = useState({ input: null });
const [outputData, setOutputData] = useState({ output: null });

formData来自我的<input />。因此,我正在通过写入来写入输入数据。outputData来自我的GET api调用。
我需要分离输入数据和输出数据。如果消息是我发来的,我怎么能告诉函数?

function renderMessage(message) {
    //const here
    if (messageFromMe) {
      return <Me />;
    } else {
      return <You />;
    }
  }

  function Me(props) {
    return (
      <li className="Messages-message currentMember">
        <div className="Message-content">
          Hey its me
        </div>
      </li>
    );
  }

  function You(props) {
    return (
      <li className="Messages-message">
        <div className="Message-content">
          Test
        </div>
      </li>
    );
  }
泰勒·伯克

这对于useEffect hook是一个很好的应用程序useEffect挂钩带有2个参数,一个回调函数(可以是您的renderMessage)和一个值数组。每当数组中的值更改时,useEffect都会调用传递给第一个参数的函数。挂钩本身将位于更高级别的组件内,当您和您的Me和You组件由挂钩的回调呈现时,它们将有效地成为父组件。

现在我们可以这样做:

const [formData, setFormData] = useState(null);
const [outputData, setOutputData] = useState(null);
const [lastMessageSender, setLastMessageSender] = useState("");

let messageFromMe = (lastMessageSender === "me");

useEffect(()=>{renderMessage(message)}, [lastMessageSender]);

最后一点是-每当您调用setFormData时,也调用setLastMessageSender并传递值“ me”;每当您调用setOutputData时,也调用setLastMessageSender并传递值“ you”-它们最终可能是其他值,例如用户名。

您可能需要便利功能来帮助您将代码保持干燥...

const updateMessageFromOutput = payload => {
setOutputData(payload);
setLastMessageSender("you");
}

const updateMessageFromForm = payload => {
setFormData(payload);
setLastMessageSender("me");
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何设置正确反应

来自分类Dev

FileZilla 不会对来自我的 java FTP 服务器的命令做出反应

来自分类Dev

如果该反应是特定反应,我将如何使我的机器人检测到反应,然后发送消息?

来自分类Dev

反应错误消息丢失

来自分类Dev

使消息消失。反应本机

来自分类Dev

反应-条件/消息

来自分类Dev

反应错误消息丢失

来自分类Dev

对旧消息做出反应

来自分类Dev

反应如何测试与setTimeout反应组件

来自分类Dev

反应复合组件 - 如何反应孩子?

来自分类Dev

我如何完成反应日期

来自分类Dev

我如何使这样的组件反应?

来自分类Dev

删除对我们自己消息的反应

来自分类Dev

如何让孩子输入反应

来自分类Dev

如何与电子反应

来自分类Dev

如何循环反应

来自分类Dev

反应-如何刷新组件?

来自分类Dev

如何更新反应状态

来自分类Dev

如何使其反应灵敏

来自分类Dev

如何绑定来自mixin的反应事件?

来自分类常见问题

我该如何在反应中设置Cookie?

来自分类Dev

在反应中,我如何在 ExpansionPanel 中动态设置 defaultExpanded

来自分类Dev

如何检查并等待消息下的反应?

来自分类Dev

来自renderDataTable的反应性输入

来自分类Dev

来自renderDataTable的反应性输入

来自分类Dev

反应来自API的输出JSON

来自分类Dev

在反应中显示Flash消息

来自分类Dev

无法在反应中显示来自减速器的消息

来自分类Dev

在反应组件内等待来自非反应源的请求