如何在React中将状态值添加到默认输入值

问题描述 投票:0回答:1

我有一个手风琴,单击时显示3个输入。用户可以在这些字段中输入值,然后将其保存为状态。当手风琴折叠时...我失去了输入值。如何为每个输入从状态中获取它们(如果它们在那里?

Github Repo

reactjs forms render accordion
1个回答
1
投票
import React from 'react'; export default class AddBackpack extends React.Component { // static contextType = ItemContext; constructor(props) { super(props); this.state = {}; this.handleChange = this.handleChange.bind(this); } handleChange({target}) { const {name, value} = target; this.setState({ [name]: value, }) } render() { const {items} = this.context; const {handleChange} = this; return ( <> <header> <h1>Create New Backpack</h1> </header> <section> <form id="record-backpack"> <div className="form-section"> <label htmlFor="backpack-title">Backpack Title</label> <input type="text" name="backpack-title" placeholder="Backpack One" required /> </div> <div className="form-section"> <h3>Select Items for Backpack</h3> <div className="form-items-section"> <div className="pack-items"> {Object.keys(items).map(function(category, key) { return ( <div key={key} className={`${category}-category`}> {/* <button></button> DO I NEED THIS TO EXPAND COLLAPSE?*/} <h4>{`${category}`}</h4> {items[category].map((value, i) => ( <> <div className="item-inputs" key={i}> <input type="radio" value={value} /> <label htmlFor={`${value}-item`}>{value}</label> <input type="text" name={`${value}-name`} id={`${value}-${i}-name`} placeholder="Brand name or model of gear" required value={this.state[`${value}-name`]} onChange={handleChange} /> <input type="text" name="backpack-size" id={`${value}-${i}-size`} placeholder="Size" required value={this.state[`${value}-name`]} onChange={handleChange} /> <input type="text" name="backpack-weight" id={`${value}-${i}-weight`} placeholder="Weight(g)" required value={this.state[`${value}-name`]} onChange={handleChange} /> </div> </> ))}{" "} </div> ); })} </div> </div> </div> <div className="pack-list" id=""> <h3>Backpack Summary</h3> <div className="pack-list-row" id="pack-weight"> <p>Total Weight:</p> </div> <div className="pack-list-row" id="weights"> <p> 0.00 kg <br /> 0.00 oz </p> </div> {/* <div className="pack-list-row" id="pack-functions"></div> */} </div> <button type="submit">Submit</button> <button type="reset">Reset</button> </form> </section> </> ); } }
© www.soinside.com 2019 - 2024. All rights reserved.