使用useState钩子时如何访问this.state?

时间:2020-05-26 10:02:26

标签: javascript reactjs react-hooks

我正在尝试发送组件的状态对象。我正在使用类组件,并使用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
    }

}

2 个答案:

答案 0 :(得分:0)

您已将状态分为4个不同的状态。您也可以分别使用这些状态,但是如果要将这些状态合并为1个对象,建议您学习useReducer钩子。您可以阅读Kent C. dodds post进行比较。

答案 1 :(得分:0)

如果我正确地遵循了您的问题,则可以使用useReducer,或者如果您想使用useState,则可以尝试以下方法:

const initialStates={...yourObject}
const [state,setState]=useState(initialStates)

然后将其作为状态传递