我正在尝试发送组件的状态对象。我正在使用类组件,并使用useState()
将其转换为函数,但是现在我无法使用this.state
访问状态对象。
我通过创建一个名为state
的对象来代替它,但是我猜这不是最优雅的解决方案...
export default function Contact () {
const [name, setName] = useState("")
const [email, setEmail] = useState("")
const [enquiryType, setEnquiryType] = useState("General Enquiry")
const [message, setMessage] = useState("")
const state = {
name,
email,
enquiryType,
message
}
const handleSubmit = (e) => {
e.preventDefault()
console.log(state) // vs this.state
var service_id = "default_service";
var template_id = "message_template";
var user_id = "user_[whatever]"
emailjs.send(service_id, template_id, state, user_id); // vs this.state
}
}
答案 0 :(得分:0)
您已将状态分为4个不同的状态。您也可以分别使用这些状态,但是如果要将这些状态合并为1个对象,建议您学习useReducer
钩子。您可以阅读Kent C. dodds post进行比较。
答案 1 :(得分:0)
如果我正确地遵循了您的问题,则可以使用useReducer,或者如果您想使用useState,则可以尝试以下方法:
const initialStates={...yourObject}
const [state,setState]=useState(initialStates)
然后将其作为状态传递