[英]How to populate State dropdown data as per selected Country dropdown lists in React.js?
我現在有兩個下拉列表,第一個是country
,第二個是state
,我想根據所選country
填充 state 下拉列表。
完整代碼 url: https://codesandbox.io/s/nt54t6
這是我的代碼:-
import React, { useState, useEffect } from "react"; import "./styles.css"; import { TextField, MenuItem } from "@mui/material"; export default function App() { const body = [ { state_ID: 1, state: "Delhi", country_ID: 1, country_name: "India" }, { state_ID: 2, state: "Mumbai", country_ID: 1, country_name: "India" }, { state_ID: 3, state: "Calgary", country_ID: 2, country_name: "Canada" }, { state_ID: 4, state: "Toronto", country_ID: 2, country_name: "Canada" } ]; const [country, setCountry] = useState([]); const [state, setState] = useState([]); const uniqValues = [...new Map(body.map((item) => [item['country_name'], item])).values(), ]; useEffect(()=>{ setCountry(uniqValues); setState(body); },[]) return ( <> <TextField className="ruleContainer" select name="Country" label="Country" variant="outlined" size="small" // onChange={(event) => // handleChangeInput(inputField.id, event) // } > {country? country.map((opt) => ( <MenuItem key={opt.country_name} value={opt.country_name}> {opt.country_name} </MenuItem> )): ""} </TextField> <TextField className="ruleContainer" select name="state" label="State" variant="outlined" size="small" value="" // onChange={(event) => // handleChangeInput(inputField.id, event) // } > {state? state.map((opt) => ( <MenuItem key={opt.state} value={opt.state}> {opt.state} </MenuItem> )): ""} </TextField> </> ) }
感謝您的努力!
您必須動態設置值。
腳步:
const [selectedCountry, setSelectedCountry] = useState("");
onChange
處理程序以更新選定的國家/地區onChange={(event) => setSelectedCountry(event.target.value)}
useEffect
以便您可以跟蹤更改body
並過濾出對國家有效的狀態。 將它們設置為 stateuseEffect(() => {
const newStates = body.filter(
({ country_name }) => country_name === selectedCountry
);
setState(newStates);
}, [selectedCountry]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.