【问题标题】:How do i pass data values to modals using react hooks?如何使用反应钩子将数据值传递给模态?
【发布时间】:2021-07-27 19:35:29
【问题描述】:

我正在使用模式来接受反应项目中的表单输入

这里是计划部分

plan/index.js

import React, { useState } from "react";
import Pay from '../Pay';


const Plan = () => {

  const [payModal, setPayModal] = useState(false);
  const [planMode, setPlanMode] = useState(true);

  return (
  <main class="main">

    {payModal && <Pay setOpenPayModal={setPayModal} />}

  <div class="plan">
   <div>
    <a class="plans" onClick={() => {setPayModal(true);}}>plan A</a>
              
    <div class="plan">
          <span class="plan">{!planMode ? "$19.99" : "$9.99"}</span>
          <span class="plan">{!planMode ? "month" : "year"}</span>
    </div>
   </div>
   <div>
    <a class="plans" onClick={() => {setPayModal(true);}}>plan B</a>
              
    <div class="plan">
          <span class="plan">{!planMode ? "$29.99" : "$19.99"}</span>
          <span class="plan">{!planMode ? "month" : "year"}</span>
    </div>
   </div>


  </div>
  </main>
  );
};
export default Plan;

正如您在{payModal &amp;&amp; &lt;Pay setOpenPayModal={setPayModal} /&gt;} 行中看到的那样,我从计划组件中调用支付模式组件并打开模式

这里是支付组件,它是模态组件

pay/index.js

import React, { useState } from "react";



function Pay({ setOpenPayModal }) {

  const [billingDetails, setBillingDetails] = useState({
    price: "",
    : "",
  });

  return (

    <div class="modal">
      <div class="modal">
        <div class="close">
          <button
            onClick={() => {
              setOpenPayModal(false);
            }}
          >
          </button>
        </div>


        <div class="modal">

        <form class="form" onSubmit={handleSubmit}>
            <fieldset class="form">

                <Field
                label="Price"
                id="price"
                type="text"
                value={billingDetails.price}
                onChange={(e) => {
                    setBillingDetails({ ...billingDetails, price: e.target.value });
                }}
                />

                <Field
                label="Frequency"
                id="frequency"
                type="text"
                value={billingDetails.frequency}
                onChange={(e) => {
                    setBillingDetails({ ...billingDetails, frequency: e.target.value });
                }}
                />

            </fieldset>
            <button class="pay" onClick={handleSubmitPay}>
                Pay
            </button>
        </form>

        </div>

      </div>
    </div>
  );
}

export default Pay;

问题是我希望能够将值 pricefrequency 从计划组件传递到支付模式组件

例如,plan A 是price="$19.99"frequency="year",因此基于在计划组件页面上单击的按钮,这些值会以动态方式传递给支付模式组件

如何使用 react hooks 实现这一点?

【问题讨论】:

    标签: javascript reactjs react-hooks


    【解决方案1】:

    您可以使用上下文来传递,但在这种情况下,我认为这不是最好的选择。我真正推荐的是通过道具传递状态变量。

    {payModal && <Pay setOpenPayModal={setPayModal} price={price} frequency={frequency} />}
    

    当我需要值和各种组件时,我通常使用上下文(useContext),例如:

    • 我需要保存登录到各种组件的用户 ID,而不是每次需要时都从服务器获取它,而是将其保存在我创建的上下文中,因此我只能进行调用一次。 文档-> https://pt-br.reactjs.org/docs/context.html

    【讨论】:

    • 你能解释一下如何使用上下文来传递吗?为什么它不是最佳选择?
    • 您能否修改您的答案,详细说明如何使用 usecontext?
    • 添加了一个为什么我会使用上下文的例子,并留下了文档的链接
    • 使用 usestate 有效(不知道为什么我从来没想过老实说),但如果你能在你的答案中提供如何使用 usecontext ,将接受作为答案,这真的会被认可..试过脚趾使用上下文和值未通过
    猜你喜欢
    • 2020-09-02
    • 1970-01-01
    • 2022-09-26
    • 2021-06-30
    • 2021-07-28
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多