javascript - 如何将数据集属性传递给后端
问题描述
我正在尝试在 userDetails 内部更新的座位选择选项中获取数据集属性(data-user-seat-lat 和 data-user-seat-long)。基本上,当用户从下拉列表中选择他的座位时,我希望从 data-user-seat-lat 和 data-user-seat-long 在 userDetails 中更新 userSeatLat 和 userSeatLong。现在函数 formValues 正在更新 Name、Airline 和 Flight 的值,所以我尝试添加一个函数用于用户选择座位但没有成功。任何帮助表示赞赏,谢谢!
const Home = () => {
const [userDetails, setUserDetails] = useState({
userName: '',
userAirline: '',
userFlight: '',
userSeat:'',
userSeatLat: '',
userSeatLong: '',
});
const formValues = (event) => {
setUserDetails({
...userDetails,
[event.target.name]: event.target.value
})
}
const register = async (event) => {
const body = JSON.stringify({
userName: userDetails.userName,
userAirline: userDetails.userAirline,
userFlight : userDetails.userFlight,
userSeat : userDetails.userSeat,
userSeatLat : userDetails.userSeatLat,
userSeatLong : userDetails.userSeatLong,
});
const response = await axios.post("/api/register", body, {
headers: {
'Content-Type': 'application/json'
}
})
return (
<div className="container">
<h1 className="title">Register User</h1>
<form onSubmit={register}>
<label>Name: </label>
<input required type="text" id="userName" name="userName" onChange={formValues}/>
<br />
<label>Airline: </label>
<input required type="text" id="userAirline" name="userAirline" onChange={formValues}/>
<br />
<label>Flight: </label>
<input required type="text" id="userFlight" name="userFlight" onChange={formValues}/>
<br />
<label>Seat: </label>
<select required type="text" id="userSeat" name = "userSeat" onChange={formValues}>
<option id="option1" data-user-seat-lat = "15" data-user-seat-long = "15" >Seat1</option>
<option id="option2" data-user-seat-lat = "10" data-user-seat-long = "0" >Seat2</option>
<option id="option3" data-user-seat-lat = "-10" data-user-seat-long = "-15" >Seat3</option>
</select>
<br />
<button type="submit">Register</button>
}
</form>
</div>
)
}
export default Home;
解决方案
您应该首先将 value 属性赋予选项。您不需要有 lat 和 long 的状态变量,因为它们与座位号有关。或者,您可以为每个座位值绘制一张地图,其中包含其各自的纬度和经度值。
<select required type="text" id="userSeat" name = "userSeat" onChange={formValues}>
<option id="option1" value="1" data-user-seat-lat = "15" data-user-seat-long = "15" >Seat1</option>
<option id="option2" value="2" data-user-seat-lat = "10" data-user-seat-long = "0" >Seat2</option>
<option id="option3" value="3" data-user-seat-lat = "-10" data-user-seat-long = "-15" >Seat3</option>
</select>
和这样的地图。
const seatMap = {
"1" : {data-user-seat-lat : "15", data-user-seat-long : "15" },
"2" : {data-user-seat-lat : "10", data-user-seat-long : "0" },
"3" : {data-user-seat-lat : "-10", data-user-seat-long : "-15" }
}
并且在发布值之前根据这样的地图设置纬度和经度
const body = JSON.stringify({
userName: userDetails.userName,
userAirline: userDetails.userAirline,
userFlight : userDetails.userFlight,
userSeat : userDetails.userSeat,
userSeatLat : seatMap[userDetails.userSeat].data-user-seat-lat,
userSeatLong : seatMap[userDetails.userSeat].data-user-seat-long,
});
推荐阅读
- java - 使用 OSGI 将不同的提供者和消费者链接到一个消费者
- react-native - 如何为仅支持 Android 的现有 React Native 应用程序添加 ios 支持?
- angularjs - 我读到“使用严格”错误,但它没有说明究竟是什么导致了错误
- python - 我可以使用python根据使用字典的输入收入来计算税收吗?
- html - ag-Grid 以编程方式更改列的自动高度
- c - "make: *** No rule to make target" 使用 Unity 单元测试
- keyboard-shortcuts - Visual Studio - 键盘快捷键:如何通过快捷键选择一行
- css - CSS Grid 未将样式应用于内部子级
- c++ - 哪些链接被授予 c++ 中的非局部成员变量?
- amazon-web-services - 无法设置 AWS-amplify MFA - Auth.confirmSignIn 函数的问题