日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

React setStats数组不更新,百思不得其解。

發布時間:2023/12/9 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 React setStats数组不更新,百思不得其解。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

樓樓今日遇到個坑爹的問題。 就是 this.setStats({}) 對 this.stats 不更新問題

問題是這樣的

constructor(props) {super(props);this.state = {imageList: []}WechatService.getMaterialOrealList("image").then((result) => {this.setState({imageList: result})});}async handleInputChangeUpload(event) {var target = event.target;var file = target.files[0];var formData = new FormData();formData.append('file', file);var result = await WechatService.updateMaterialImage(formData);var lists = this.state.imageList;lists.push(result);console.log(lists);//同步更新this.setState((prevState, props) => ({imageList: lists}))} 復制代碼

數組的長度已經變成了11可是 render 并沒有更新!!,這是為什么呢? 此方法已經是谷歌出來的東西,可是好像并沒有成功

this.setState((prevState, props) => ({imageList: lists})) 復制代碼

但是樓主看了一下elementsUI 的代碼后進行一次修改后,發現一下方案倒是成功了。百思不得其解,不知道那位小兄弟可以解答一下。

constructor(props) {super(props);this.state = {//這是把數組用一個對象包含起來data: {imageList: []}}}componentWillMount() {WechatService.getMaterialOrealList("image").then((result) => {this.setState({data: Object.assign({}, {imageList: result})})});}handleUpload() {this.refs.inputFile.click();}async handleInputChangeUpload(event) {var target = event.target;var file = target.files[0];var formData = new FormData();formData.append('file', file);var result = await WechatService.updateMaterialImage(formData);var lists = this.state.data.imageList;lists.push(result);this.setState((prevState, props) => ({//淺拷貝、對象屬性的合并data: Object.assign({}, { imageList: lists })}))setTimeout(() => {console.log(this.state.data);});} 復制代碼

這樣使用對象進行修改的數組變量反而更新了。

這是為什么呢? 無法解答

總結

以上是生活随笔為你收集整理的React setStats数组不更新,百思不得其解。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。