亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何更改類組件中的狀態?

如何更改類組件中的狀態?

慕桂英546537 2021-10-29 16:07:01
我無法更新狀態值。以及如何使用當前狀態值加載文本字段?請參閱以下內容:class Form extends React.Component{constructor(props){    super(props);    this.state = {      user: '',      firstName: '',      lastName: '',      email: ''    }  } handleChange(field, e){                let fields = this.state.fields;    fields[field] = e.target.value;            this.setState({fields});  }  componentDidMount() {  axios.all([      axios.get(config.getUser),      axios.get(config.getFullName).catch(function() { return false})    ])    .then(axios.spread(function (user, fullName) {      console.log("USER: ", this.state.user)      console.log("FULLNAME: ", this.state.fullName)      var number = user.data.number;      var firstName = user.data.firstName;      var lastName = user.data.lastName;      if (number !== undefined) {        this.setState({user: number})        console.log("NUMBER: ", this.state.user) ==> doesn't print      }      if (fullName !== false || firstName !== undefined) {        this.setState({firstName: firstName});         console.log("GET firstName: ",  this.state.firstName);  ==> doesn't print        this.setState({lastName: lastName});        console.log("GET lastName: ",  this.state.lastName);      }      })) } render() {  console.log("STATE: ", this.state)    return (        <div>        <form name="form" onSubmit= {this.formSubmit.bind(this)} style={{minWidth: '515px'}}>             <Header title="Request" />            <Paper style={styles.paperRequestForm}>                <Grid container>                    <TextField                        required                        name="number"                        type="text"......這是回應:用戶:對象{編號:“541”}全名:對象{“firstName”:“Dee”,“lastName”:“Williamson”}STATE:Object { user: "", firstName: "", lastName: "" } ===> 狀態不會改變。
查看完整描述

3 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

setState() 是異步的,您無法立即獲得更新的值。您應該使用任何其他生命周期事件(componentWillUpdate() 或在 render() 中),或者您可以將回調傳遞給 setState(),如下所示:


      if (number !== undefined) {


        this.setState({user: number}, ()=> console.log("NUMBER: ", this.state.user))

      }

      if (fullName !== false || firstName !== undefined) {


        this.setState({firstName: firstName}, ()=>console.log("GET firstName: ",  this.state.firstName); ); 

        this.setState({lastName: lastName}, ()=> console.log("GET lastName: ",  this.state.lastName));

        ;

      } 


查看完整回答
反對 回復 2021-10-29
  • 3 回答
  • 0 關注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號