第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

調(diào)用 setState 后對象屬性變?yōu)槲炊x

調(diào)用 setState 后對象屬性變?yōu)槲炊x

FFIVE 2023-02-24 10:08:17
我是 React js 的新手,我想問一下,我有一個對象,我想更新對象的一些屬性,但是當我更改對象的一個屬性時,另一個屬性也被更新并且值未定義我嘗試使用擴展運算符但是當我運行時,它顯示錯誤未定義。這是我的代碼export default class Message extends React.Component {  constructor(props){    super(props);      this.state = {        isLoggedIn: SystemStore.isLoggedIn(),        profile: ProfileStore.getProfile(),        messageInfo: {          fullName: SystemStore.systemUser().fullName,          site: '',          email: '',          phone: '',        },        subject: '',        description: '',        type: '',        errorMessage: '',        errorDialog: '',        isSubmited: false,        successMessage: '',        submitting: false      };....  clearForm(){    this.setState({      messageInfo: {        ...messageInfo, //in here i get error messageInfo is not defined          subject: '',          description: ''//if doing this i get error SyntaxError      }})  }  handleProfileChange(){    this.setState({      messageInfo: {        ....messageInfo, site: ProfileStore.getProfile().primarySite.name,      }});    console.log(this.state.messageInfo.fullName);    console.log(this.state.messageInfo.site);  }  handleSubjectChange(evt){    this.setState({ subject: evt.target.value }, () => {      if(this.state.messageInfo.subject === 'PRAYER') {        this.setState({ type: 'REQUEST' });      } else if(this.state.messageInfo.subject === 'ADDRESS') {        this.setState({ type: 'INFORMATION' });      } else if(this.state.messageInfo.subject === 'VISIT'){        this.setState({ type: 'REQUEST' });      }    });  }      handleMessageChange(evt){    this.setState(prevState=>({      messageInfo: {        ...prevState.messageInfo, description: evt.target.value      }}));  }有什么建議我錯了嗎?謝謝
查看完整描述

3 回答

?
MMTTMM

TA貢獻1869條經(jīng)驗 獲得超4個贊

您所在的州有多個屬性。messageInfo例如,如果您從屬性and開始type,然后再使用this.setState({ messageInfo: newMessageInfo }),那么新狀態(tài)將只有屬性messageInfo;該type屬性將丟失,因為它的值未傳遞給setState。


setState相反,在定義新屬性之前將先前的狀態(tài)傳播到調(diào)用中:


clearForm(){

  this.setState({

    ...this.state,

    messageInfo: {

      ...this.state.messageInfo,

      // ...


handleSubjectChange(evt){

  this.setState({ ...this.state, subject: evt.target.value }, () => {

等等。


查看完整回答
反對 回復(fù) 2023-02-24
?
慕沐林林

TA貢獻2016條經(jīng)驗 獲得超9個贊

您不能直接訪問messageInfo. 有兩種獲取方式:


clearForm(){

    this.setState({

      messageInfo: {

        ...this.state.messageInfo,

          subject: '',

          description: ''

      }

    })

  }

或者


clearForm(){

    this.setState((prevState) => {

      messageInfo: {

        ...prevState.messageInfo,

        subject: '',

        description: ''

      }

   })

  }


查看完整回答
反對 回復(fù) 2023-02-24
?
拉風(fēng)的咖菲貓

TA貢獻1995條經(jīng)驗 獲得超2個贊

在 clearForm(){} 函數(shù)中你不能直接使用 messageInfo,你應(yīng)該定義一個狀態(tài)類型而不是變量。


        clearForm(){

         this.setState({

          messageInfo: {

           ...this.state.messageInfo, 

              subject: '',

              description: ''

           }})

        }


查看完整回答
反對 回復(fù) 2023-02-24
  • 3 回答
  • 0 關(guān)注
  • 199 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號