【问题标题】:Unable to Post Checkbox and Radio button Values to the Server using Redux无法使用 Redux 将复选框和单选按钮值发布到服务器
【发布时间】:2021-10-31 14:47:23
【问题描述】:

我有一个表单,在该表单中我有所有字段,如输入、下拉、单选和复选框。 现在我可以使用 Redux 将我的数据发布到服务器,并且我可以发布除复选框值和单选按钮值之外的所有数据...... 我需要对复选框和单选按钮的值进行哪些更改..

这是行动:

export const createData =(product) =>{
        return async (dispatch)=>{
              try {
                let dataUrl ="http://localhost:3000/users";
                let res = await axios.post(dataUrl,product);
                dispatch({type :CREATE_DATA, payload:res.data});
              } catch(error){
                 console.log(error)
              }
        }
}

这是减速器:

 export const reducerName = (state = initialstate, action) => {
    switch (action.type) {
        case actiondata.GETALL_DATA:
            return {
                 ...state,
                 productdata : action.payload
            }
        
           case actiondata.CREATE_DATA :
               return {
                ...state
               }

            default:return state
    }
}

这是模型弹出窗口:

const AddModel = () => {

    const [model, setmodel] = useState(false)
    const adduser = () => {
        setmodel(true);
    };
    const closeModal = () => {
        setmodel(false);
    };

    const [data, setdata] = useState({
        "UserName" : "",
        "PhoneNumber" : "",
         "email" : "",
          "dropDown" :"",
          "gender" : null,
          "checking" :[]
    })

    let dispatch = useDispatch();
             //Reading the Data from Store
       let readdatafromstore = useSelector((state)=>{
                       return state.keepdatatostore;
       })


   const handleChnage=(e)=>{
    setdata({...data,[e.target.name]:e.target.value});
   }

   const handleSubmit=(e)=>{
    e.preventDefault();
     dispatch(allActions.createData(data));
 
   }
  

    return (
        <React.Fragment>
            <div className="container">
                <button type="button" className="btn btn-primary" onClick={adduser}>Add User</button>
            </div>
            {model && (
                <div className="modal" style={{ display: "block" }}>
                    <div className="modal-dialog" style={{ maxWidth: "60%" }}>
                        <div className="modal-content">
                            <div className="modal-header">
                                <h5 className="modal-title">Modal title</h5>
                                <button type="button" className="btn-close" data-bs-dismiss="modal" aria-label="Close" onClick={closeModal}></button>
                            </div>
                            <div className="modal-body">
                                <form>
                                    <div className="row">
                                        <div className="col">
                                            <div className="mb-3" style={{ textAlign: "left" }}>
                                                <label className="form-label fw-bold">UserName</label>
                                                <input type="text" className="form-control" placeholder='UserName' name="UserName" onChange={handleChnage} />
                                            </div>
                                            <div className="mb-3" style={{ textAlign: "left" }}>
                                                <label className="form-label fw-bold">PhoneNumber</label>
                                                <input name="phone" className="form-control" placeholder='PhoneNumber' name="PhoneNumber" onChange={handleChnage} />
                                            </div>
                                            <div className="mb-3" style={{ textAlign: "left" }}>
                                                <label className="form-label fw-bold">Email</label>
                                                <input type="email" className="form-control" placeholder='EmailAddress'  id="exampleInputEmail1" aria-describedby="emailHelp" name="email" onChange={handleChnage} />
                                            </div>
                                            {/* <div className="mb-3">
                    <label
                      htmlFor="exampleInputPassword1"
                      className="form-label"
                    >
                      Date
                    </label>
                    <input
                      type="date"
                      className="form-control"
                      id="exampleInputPassword1"
                    />
                    </div> */}

                                        </div>
                                        <div className="col">
                                            <div className="mb-3" style={{ textAlign: "left" }}>
                                                <label className="fw-bold">DropDown Value</label>
                                                <select className="form-select" aria-label="Default select example" name="dropDown" onChange={handleChnage} >
                                                    <option selected>Select From Dropdown</option>
                                                    <option value="ReactJS">ReactJS</option>
                                                    <option value="JavaScript">JavaScript</option>
                                                    <option value="HtmlCss">HtmlCss</option>
                                                </select>
                                            </div>
                                            <div className="mb-3">
                                                <label  className="mb-2 fw-bold">Gender</label>
                                                <div className="form-check">
                                                    <input className="form-check-input" type="radio" name="gender" id="male" onChange={handleChnage}/>
                                                    <label className="form-check-label" htmlFor="flexRadioDefault1" >Male</label>
                                                </div>
                                                <div className="form-check">
                                                    <input className="form-check-input" type="radio" name="gender"  id="female" onChange={handleChnage}/>
                                                    <label className="form-check-label" htmlFor="flexRadioDefault2">Female</label>
                                                </div>
                                            </div>
                                            <div className="mb-3">
                                                <label  className="mb-2 fw-bold">Checkbox Value</label>
                                                <div className="form-check">
                                                    <input className="form-check-input" type="checkbox" value="" id="flexCheckDefault" />
                                                    <label className="form-check-label" htmlFor="flexCheckDefault">Javascript</label>
                                                </div>
                                                <div className="form-check">
                                                    <input className="form-check-input" type="checkbox" value="" id="flexCheckChecked" />
                                                    <label className="form-check-label" htmlFor="flexCheckChecked">React JS</label>
                                                </div>
                                                <div className="form-check">
                                                    <input className="form-check-input" type="checkbox" value="" id="flexCheckChecked" />
                                                    <label className="form-check-label" htmlFor="flexCheckChecked">HTML</label>
                                                </div>
                                                <div className="form-check">
                                                    <input className="form-check-input" type="checkbox" value="" id="flexCheckChecked" />
                                                    <label className="form-check-label" htmlFor="flexCheckChecked">CSS</label>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </form>
                            </div>
                            <div className="modal-footer">
                                <button type="button" className="btn btn-secondary" data-bs-dismiss="modal" onClick={closeModal}>Close</button>
                                <button type="button" className="btn btn-primary" onClick={handleSubmit}>Add User</button>
                            </div>
                        </div>
                    </div>
                </div>
            )}
        </React.Fragment>
    )
}

【问题讨论】:

    标签: redux react-hooks


    【解决方案1】:

    对于单选按钮,只需添加 value 属性 (value="male",value="female",value="others")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      相关资源
      最近更新 更多