reactjs - 如何使用一个函数传递对象?
问题描述
如何仅使用一个函数将对象从一个组件传递到另一个组件?我想从“PersonalData”(嵌套组件)发送键和值并识别它们并存储在 userFormular(主组件)中。
我可以将许多功能作为道具传递给组件,但如果我有超过 4 个,它看起来并不干净。
import React, {useState} from 'react'
import PersonalData from './PersonalData'
export default function UserFormular() {
const initialData={
name:'Johnny',
lastName:'Bravo',
email:'email@email.com'
}
const [data,setData] = useState(initialData)
function updateData(){
<1???>
}
return(
<PersonalData updateData={updateData} />
)
}
import React, {useContext, useState} from 'react'
import {MyContext} from '../utils/CustomContext'
import Header from './Header'
//MATERIAL UI
import TextField from '@mui/material/TextField';
//START
export default function PersonalData({updateData, nextPage }) {
const [name,setName]=useState("Name")
const [lastName,setLastName]=useState("Last name")
const [email,setEmail]=useState("email")
const darkMode = useContext(MyContext)
const myStyle={
myButtonContainer:{
marginTop:"100px",
display:"flex",
flexDirection:"column",
justifyContent:"center",
alignItems:"center"
},
myButton:{
backgroundColor:darkMode ? "#888" : "#111",
}
}
function handleData(e){
updateData();
<2???>
}
return (
<>
<div style={myStyle.myButtonContainer}>
<TextField
helperText="Please enter your name"
label={name}
onChange={handleData}
sx={{m:6, mb:2}}
/>
<TextField
helperText="Please enter your last name"
label={lastName}
onChange={handleData}
sx={{m:2}}
/>
<TextField
helperText="Please enter your email"
label={email}
onChange={handleData}
sx={{m:2}}
/>
</div>
</>
)
}
谢谢你的回答。卡米尔
解决方案
让代码看起来更干净的一个建议:定义一个接口来简化数据
export interface DataInterface {
name: string;
lastName: string;
email: string;
}
在 PersonalData 函数中:
const [data,setData]=useState<DataInterface>();
useEffect(() => {
const data = updateData();
setData(data);
}, []);
推荐阅读
- forge - 是否可以使用 Forge 模型衍生 API 获取 IFC4 文件的 AEC 模型数据?
- php - 如何在 php 中获取 Mysql 日月函数等价物
- mongodb - 将来自猫鼬的响应格式化为模型
- d3.js - d3.js:跨多个图表同步选择
- elasticsearch - 使用来自 JSON 文件的查询打开 Kibana 控制台?
- tableau-api - Tableau Desktop 连接到 Tableau Server ..数据源
- python - 在csv,Python中旧索引的开始(旧数据之上)附加数据
- types - Java中的数据类型
- javascript - REACTjs 在输入时捕获输入框数据
- google-bigquery - Google Big Query - 如何将列中空值的特定百分比分配给特定类别?