反应-如何设置“我的邮件”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反应-如何设置“我的邮件”相关的知识,希望对你有一定的参考价值。

我有2个状态:

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

formData来自我的<输入>。因此,我正在通过写入来写入输入数据。 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");

以上是关于反应-如何设置“我的邮件”的主要内容,如果未能解决你的问题,请参考以下文章

如何使用打字稿为反应测试库设置智能感知

如何设置文本输入反应的状态

如何设置反应选择选项的样式

如何设置重定向到反应组件的元素?

如何根据最大选项宽度设置反应选择宽度?

如何对子反应组件进行 css 样式设置?