当前位置: 首页 > 知识库问答 >
问题:

如何在useState中存储选定的值

何涵忍
2023-03-14

我是React JS的初学者。我想学习如何将选定的值存储在useState中。

该表单包含四个不同的下拉列表,我想将这些选定的值存储在useState中,以便在多步骤表单结束时,用户可以返回以编辑sub之前的字段。

import React, {useState} from 'react';
import './paperdetails.css';
import IncDecCounter from './IncDecCounter'
import {
  Text

} from '@chakra-ui/react';

const PaperDetails = () => {

  const [selected, setSelected] = useState();

  return (
    <div className='paper-details'>
      <div className='paper-details_display_flex'>
      <div className='left'>
        <div className='left-calc_wrapper'>
          <div>
            <label>Type of Paper</label>
            <select>

              <option value="essay">Paraphrasing</option>
              <option value="Custom Writing">Custom Writing</option>
              <option selected value="Dissertation">Dissertation</option>
              <option value="Research Paper">Research Paper</option>
              <option value="essay">Essay</option>
              <option value="Term Paper">Term Paper</option>
              <option selected value="Admission Essay">Admission Essay</option>
              <option value="Coursework">Coursework</option>
              <option value="Book Review">Book Review</option>
              <option selected value="Paraphrasing">Essay</option>
              <option value="Physics Paper">Physics Paper</option>

            </select>
          </div>
          <div>
            <label>Study Level</label>
            <select>

              <option value="school">Bachelor</option>
              <option value="college">College</option>
              <option selected value="Bachelor">School</option>
              <option value="Masters">Masters</option>

            </select>
          </div>
        </div>

        <div className='left_middle'>
          <div className='calc-control'>
            <label>Number of Pages</label>
            <IncDecCounter />
          </div>
          <div className="select-deadline">
            <label>Deadline</label>
            <select className='deadline' value={selected} onChange={e=>setSelected(e.target.value)}>
              <option value="1 hour">1 hour</option>
              <option value="3 hours">3 hours</option>
              <option selected value="8 hours">8 hours</option>
              <option value="12 hours">12 hours</option>
              <option value="24 hours">24 hours</option>
              <option value="48 hours">48 hours</option>
              <option selected value="3 days">3 days</option>
              <option value="5 days">5 days</option>
              <option value="7 days">7 days</option>
              <option selected value="14 days">14 days</option>
            </select>
            <span color={'#785aec'} fontSize={'14px'}
        fontWeight={'bold'}> Will be ready in: {selected}
      </span>
          </div>

        </div>
        <section className="writing-instructions">
          <div className="writing_instructions">
            <div className="d-flex">
              <label className='instructions'>
                Writing instructions
                <span className='text-orange'>  *required</span>
              </label>

              <input className="input-file" id="my-file" type="file" 
              accept="application/pdf,application/msword,
              application/vnd.openxmlformats-officedocument.wordprocessingml.document"/>
              <label tabindex="0" for="my-file" className="input-file-trigger">
                <span className='span--underlinel-blue'>  Upload writing Instructions</span>
              </label>
            </div>
            <div className='text-area'>
              <textarea className='text-area_main' 
              placeholder='Type your instructions here. Please provide as many details as possible.'></textarea>
            </div>
          </div>
        </section>

      </div>
      <div className='right'>
        <div className='total-row'>
          <div className='total-text'>
            <h1 className='total-text_h1'>Total:</h1>
            <span className='span_price'>$0.00</span>
          </div>
        </div>
      </div>
    </div>
    </div>
  )
}

export default PaperDetails;

共有3个答案

司徒骞尧
2023-03-14

这是您如何在useState()中存储任何输入字段的值;

const [selected,setSelected] = useState({});
function handleChange(event){
    setSelected({...selected,[event.targe.id]=event.target.value});
}
return(
<select 
     id={"id_0"}
     value={selected["id_0"]} 
     onChange={(event)=>(handleChange(event))}>

…….“您的代码在此处继续”

这是您处理多个输入字段的方式。

<select  id={'id_1'}  value={selected['id_1']} 
         onChange={(event)=>(handleChange(event))}/>
   <select  id={'id_2'} value={selected['id_2']} 
         onChange={(event)=>(handleChange(event))}/>
澹台承
2023-03-14

请结帐此问题:

这里已经回答过了:

React JSX:选择“selected”on selected

劳通
2023-03-14

如何在状态中存储多个值

为此,您需要为所有四个选择框定义状态,如下所示

const [seleccedValue1,setSelectedValue1]=useState(null);
const [seleccedValue2,setSelectedValue2]=useState(null);
const [seleccedValue3,setSelectedValue3]=useState(null);
const [seleccedValue4,setSelectedValue4]=useState(null);

然后您需要处理每个选择框的更改事件,如下所示

       <select onChange={(e)=>{setSelectedValue1(e.target.value)}}>

          <option value="essay">Paraphrasing</option>
          <option value="Custom Writing">Custom Writing</option>
          <option selected value="Dissertation">Dissertation</option>
          <option value="Research Paper">Research Paper</option>
          <option value="essay">Essay</option>
          <option value="Term Paper">Term Paper</option>
          <option selected value="Admission Essay">Admission Essay</option>
          <option value="Coursework">Coursework</option>
          <option value="Book Review">Book Review</option>
          <option selected value="Paraphrasing">Essay</option>
          <option value="Physics Paper">Physics Paper</option>

        </select>

您也可以对其他选择框执行相同的操作

 类似资料:
  • 我正在Eclipse中执行动态web项目 我在我的jsp页面中使用下拉列表 例如 但我需要为每个选项存储多个值,以便有任何解决方案。。?? 我需要如果用户选择第一个选项,我需要多个选项值 指-- 当用户选择该选项时,我需要4个不同的值,以便有任何解决方案,或者在jsp中有任何替代方案可用于执行该任务。。。??

  • 我有以下对象需要存储在Cassandra中。我需要使用UDT还是有其他方法来存储对象。我需要最终使用存储库方法从spry-boot应用程序存储它。

  • 问题内容: 这星期我们在办公室进行了一场健康的辩论。我们正在创建一个Db来存储代理信息,在大多数情况下,除了应该如何存储IP之外,我们还制定了模式。一个阵营想要使用4个smallint,每个八位位组一个,另一个希望使用1个大int INET_ATON。 这些表将非常庞大,因此性能至关重要。我处于中间位置,因为我通常在世界中使用MS SQL和4个小整数。我对这种类型的IP存储量没有足够的经验。 我们

  • 问题内容: 我有一个具有数据类型joda.money属性的类。如何将这个属性映射到mysql中。 我的课是: @Table(name =“ products”)公共类Product(){@Column(name =“ name”)字符串名称;@Column(name =“ money”)金钱金钱;} 我正在使用Spring Hibernate 谁能说出如何将此模型存储到mysql中? 问题答案:

  • 问题内容: 如何在免费版本的MySQL中存储Unicode? 在SQL Server中似乎没有类型。MySQL不支持Unicode吗?我尝试使用,但是那也不起作用。 问题答案: 您需要为表选择一个 字符集。然后,文本和备注字段将自动存储在UTF-8中。MySQL 6中提供了对UTF-16的支持。

  • 问题内容: 我知道float或double不适合存储货币和数量等十进制数字。我正在尝试使用NSDecimalNumber。这是我在Swift操场上的代码。 控制台输出为1.6599999999999995904 如何将十进制数1.66的确切值存储在变量中? 问题答案: 在 右侧是一个浮点数,不能精确表示值“ 1.66”。一种选择是从字符串创建十进制数字: 另一种选择是使用算术: 在Swift 3中