如何获得用户输入值并在React中基于该值显示另一个元素?

艾玛

我正在尝试显示一个复选框(“我同意”),例如,如果一个未满18岁的用户,则不显示该复选框。

我编写了handleAgreementCheckbox一个truefalse如果用户未满18岁,则应返回布尔值(),不知道如何获取元素值并显示复选框。

我该如何在React中做到这一点?

import React from 'react'
import {
  Form,
  Field
} from 'react-advanced-form'
import {
  Input,
  Button
} from 'react-advanced-form-addons'

export default class RegistrationForm extends React.Component {
  registerUser = ({
    serialized,
    fields,
    form
  }) => {
    return fetch('https://backend.dev', {
      body: JSON.stringify(serialized)
    })
  }

  handleAgreementCheckbox = () => {
      const currentTime = new Date();
      const eligibleUserDOB = new Date(currentTime.getFullYear() - 18, currentTime.getMonth(), currentTime.getDate());
      return currentTime>= eligibleUserDOB;
  };

  render() {
    return (
      <section className = "container">
        <Form action = {
          this.registerUser
        }
        onSubmitStart = {
          this.props.onSubmitStart
        }>
            <Input name = "firstName"
            label = "First name"
            required = {
              ({
                get
              }) => {
                return !!get(['lastName', 'value'])
              }
            }/>
            <Input name = "lastName"
            label = "Last name"
            required = {
              ({
                get
              }) => {
                return !!get(['firstName', 'value'])
              }
            }
            />

            <Input name = "emailAddress"
            type = "email"
            label = "Email Address"
            required />

            <Input name = "phoneNumber"
            type = "text"
            label = "Phone Number"
            required />

            <Input name = "dateOfBirth"
            type = "date"
            label = "Date of Birth"
            required />

            <Input name = "eligibleAge"
            type = "checkbox"
            label = "I agree"
            value = "unchecked"
            />
          <Button primary> Submit </Button>
        </Form>
      </section>
    );
  }
}

(谢谢!我是React的新手。)

演示在codesandbox上

汗先生

好的,首先创建一个状态,以保留资格的真假条件。然后在handleAgreementCheckbox方法中设置该状态。最后,使用合格状态根据true或false有条件地呈现复选框。

/**
 * Registration form.
 * The component we have built together as the part of
 * React Advanced Form presentation on Medium.
 */
import React, { useState } from "react";
import { Form, Field } from "react-advanced-form";
import { Input, Button } from "react-advanced-form-addons";
// import 'react-phone-number-input/style.css'
// import PhoneInput from 'react-phone-number-input'
import PhoneInput from "react-phone-input-2";
import "react-phone-input-2/lib/style.css";

export default class RegistrationForm extends React.Component {
  registerUser = ({ serialized, fields, form }) => {
    return fetch("https://backend.dev", {
      body: JSON.stringify(serialized)
    });
  };

  state = { phone: "", eligible: false };

  handleOnChange = value => {
    console.log(value);
    this.setState({ phone: value }, () => {
      console.log(this.state.phone);
    });
  };

  handleAgreementCheckbox = event => {
    let selectedDate = event.nextValue; //======> fetch selected date and split it to pass into date object.
    selectedDate = selectedDate.split("-");
    console.log(selectedDate);

    const currentTime = new Date();
    const eligibleUserDOB = new Date(
      selectedDate[0],
      selectedDate[1] - 1,
      selectedDate[2]
    );
    console.log(currentTime, eligibleUserDOB);
    console.log(currentTime > eligibleUserDOB);

    if (currentTime >= eligibleUserDOB) { //====> on greater set eligible to true
      this.setState({ eligible: true });
    } else {                              //====> on less set eligible to false
      console.log(this.state);
      this.setState({ eligible: false });
    }

    return currentTime >= eligibleUserDOB;
  };

  render() {
    return (
      <section className="container">
        <Form
          action={this.registerUser}
          onSubmitStart={this.props.onSubmitStart}
        >
          <Input
            name="firstName"
            label="First name"
            required={({ get }) => {
              return !!get(["lastName", "value"]);
            }}
          />
          <Input
            name="lastName"
            label="Last name"
            required={({ get }) => {
              return !!get(["firstName", "value"]);
            }}
          />

          <Input
            name="emailAddress"
            type="email"
            label="Email Address"
            required
          />

          <PhoneInput
            name="phoneNumber"
            type="text"
            country={"us"}
            enableAreaCodes={true}
            onlyCountries={["us"]}
            areaCodes={{ us: ["332"] }}
            inputProps={{
              name: "phone",
              country: "us",
              required: true,
              autoFocus: true
            }}
            value={this.state.phone}
            onChange={this.handleOnChange}
            required
          />

          <Input
            name="dateOfBirth"
            type="date"
            label="Date of Birth"
            onChange={this.handleAgreementCheckbox}
            required
          />
          {this.state.eligible && ( //===========> print the state here and change time to see it in working. It will display the check on true and hide on false
            <Input
              name="eligibleAge"
              type="checkbox"
              label="I agree"
              value="unchecked"
            />
          )}
          <Button primary> Submit </Button>
        </Form>
      </section>
    );
  }
}

// <PhoneInput
//  country="US"
//  value={this.phoneNumberValidation.value}
//  onChange={this.phoneNumberValidation.setValue} />

这里工作演示

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取输入值并在另一个div中显示

来自分类Dev

如何基于另一个输入值在PHP中访问$ _Get变量

来自分类Dev

如何使用reactjs在另一个输入字段中显示输入字段值?

来自分类Dev

如何从edittext获取用户输入并在同一活动中显示在另一个edittext中

来自分类Dev

在React中单击另一个输入框时如何更改输入值

来自分类Dev

要求元素基于另一个元素的值

来自分类Dev

如何从另一个支持页面的表单中调用该值,并在OctoberCms的组件上使用它

来自分类Dev

如何从php形式的单选按钮获取值并在另一个php中检查该值

来自分类Dev

如果用户已经在另一个单元格中输入了值,如何通知用户在一个单元格中输入值

来自分类Dev

基于另一个元素值的Xpath

来自分类Dev

我如何获取<div>元素的文本值并在AngularJS中使用ng click在另一个div中显示它

来自分类Dev

在React中,如何根据另一个元素的事件设置选择的值

来自分类Dev

如何在一个类别中输入值,并在另一个类别中枚举值以输出正确的信息?

来自分类Dev

如何从具有相同类的div中获取文本值,并在另一个div中显示?

来自分类Dev

如果在Django中形成另一个模型,如何基于相同模型从另一个模型中显示值

来自分类Dev

使用一个View Controller从用户那里获取文本,将该值添加到数据库中并在另一个VC中显示

来自分类Dev

基于数组中的一个键值如何找到另一个键的值?

来自分类Dev

如何获取selectinput的值并在另一个具有光泽的selectinput中显示变量数据

来自分类Dev

如何将单击的链接的值传递到另一个页面并在跨度中显示

来自分类Dev

如何基于另一个表中的值查找和替换表中的值

来自分类Dev

从另一个函数已经作为“输入”获得的值中获取值

来自分类Dev

根据基于该字典中另一个键的值的条件,更新python词典列表中的值

来自分类Dev

如何根据相同元素的另一个值在字典列表中搜索元素的值?

来自分类Dev

如何基于另一个矩阵的值在矩阵中设置索引值

来自分类Dev

如何基于另一个值[JavaScript]在对象数组中搜索特定值?

来自分类Dev

如何基于R中的另一个列值为列分配值?

来自分类Dev

显示一个对象属性值,并在悬停时显示另一个

来自分类Dev

如何使用一个按钮将值插入表并在另一个表中更新值?

来自分类Dev

在react Link中使用params并在另一个组件中获取其值?

Related 相关文章

  1. 1

    获取输入值并在另一个div中显示

  2. 2

    如何基于另一个输入值在PHP中访问$ _Get变量

  3. 3

    如何使用reactjs在另一个输入字段中显示输入字段值?

  4. 4

    如何从edittext获取用户输入并在同一活动中显示在另一个edittext中

  5. 5

    在React中单击另一个输入框时如何更改输入值

  6. 6

    要求元素基于另一个元素的值

  7. 7

    如何从另一个支持页面的表单中调用该值,并在OctoberCms的组件上使用它

  8. 8

    如何从php形式的单选按钮获取值并在另一个php中检查该值

  9. 9

    如果用户已经在另一个单元格中输入了值,如何通知用户在一个单元格中输入值

  10. 10

    基于另一个元素值的Xpath

  11. 11

    我如何获取<div>元素的文本值并在AngularJS中使用ng click在另一个div中显示它

  12. 12

    在React中,如何根据另一个元素的事件设置选择的值

  13. 13

    如何在一个类别中输入值,并在另一个类别中枚举值以输出正确的信息?

  14. 14

    如何从具有相同类的div中获取文本值,并在另一个div中显示?

  15. 15

    如果在Django中形成另一个模型,如何基于相同模型从另一个模型中显示值

  16. 16

    使用一个View Controller从用户那里获取文本,将该值添加到数据库中并在另一个VC中显示

  17. 17

    基于数组中的一个键值如何找到另一个键的值?

  18. 18

    如何获取selectinput的值并在另一个具有光泽的selectinput中显示变量数据

  19. 19

    如何将单击的链接的值传递到另一个页面并在跨度中显示

  20. 20

    如何基于另一个表中的值查找和替换表中的值

  21. 21

    从另一个函数已经作为“输入”获得的值中获取值

  22. 22

    根据基于该字典中另一个键的值的条件,更新python词典列表中的值

  23. 23

    如何根据相同元素的另一个值在字典列表中搜索元素的值?

  24. 24

    如何基于另一个矩阵的值在矩阵中设置索引值

  25. 25

    如何基于另一个值[JavaScript]在对象数组中搜索特定值?

  26. 26

    如何基于R中的另一个列值为列分配值?

  27. 27

    显示一个对象属性值,并在悬停时显示另一个

  28. 28

    如何使用一个按钮将值插入表并在另一个表中更新值?

  29. 29

    在react Link中使用params并在另一个组件中获取其值?

热门标签

归档