关于Vue中的axios数据异步 获取后,更改数据,页面没有更新

2023-05-16

更改axios数据后,页面没有更新解决办法

  • 列子
    • 解决

列子

	//页面视图HTML
	<span>{{test[0].ress}}</span>
	// 数据请求
	this.axios.get('/list/1').then(res => {
		 // 得到数据
	     this.test = res.data.data	
	     // 对数据批量更改
	      this.test.map((val, index) => {
	        this.axios.get('/list/2').then(res => {
	          val.ress = res.data.data[0].name
	          this.test.push(val)
	        })
	      })
    })
     // 发现console.log(this.test) 数据得到了更改
     // 但是页面数据并没有刷新
     //尝试 watch 监听test数据,然后等待DOm更新 
     watch: {
     	test (val) {
     		this.$nextTick(() => {
				this.test = val
			})
     	}
     }
     // 失败,发现,依然是console.log(this.test,val)  ress 都存在,但是视图依然没有更新

解决

这里特别声明一下vue的数据更新方式,对于数组,vue只会在使用Array的原生方法更改数据后,才会更新视图而对于上面 val.ress = res.data.data[0].name 这样直接对this.test的子对象更改数据,并不会触发vue的响应更新机制,因为vue的监听对象压根就不监听 这样的赋值方式,查资料,网上找解决办法,终于眼前一亮
在这里插入图片描述
1.Vue只能使用如下数组方法,才能响应式更新视图:
push
pop
shift
unshift
splice
sort
reverse

	// 这下明白了为什么视图没有响应更新
	//	然后开始解决问题
	 this.axios.get('/list/1').then(res => {
	 // 首先我这里就不用声明的test来取值,新建一个data来获取请求回来的数据
      let data = res.data.data
      // 然后批量处理数据,使用了map,你也可以使用forEach,看个人
      data.map((val, index) => {
      	// 这里第二次请求更新data中的某一项值或者新增某一项
        this.axios.get('/list/2').then(res => {
        	// 新增ress
          val.ress = res.data.data[0].art_name
          //  赋值完毕后,加入我们在vue中声明的this.test数组
          // 这个时候,vue监听对象监听到this.test使用了push方法,开始响应更新页面数据,
          this.test.push(val)
          // 
        })
      })
    })
	

你发现,视图更新了,恭喜你,也恭喜我,对自己又一次加了一点汽油,让我们更好的奔跑吧

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于Vue中的axios数据异步 获取后,更改数据,页面没有更新 的相关文章

  • Node 中express.js 和 axios.js 的区别

    我们使用axios来进行get post等http请求 我们也出于同样的目的使用快递 然而 根据我读到的内容 它们有不同的目的 请解释一下如何 PS 如果能举例说明就太好了 你可以将express js视为一个仓库 app get item
  • React 中 Axios 调用时 API 中的 PHP-Session 发生变化

    我正在使用 PHP 编写 Api 该 Api 由 React Web 客户端调用 我使用 Axio 来调用 Api 当我向 Api 发送内容时 SessionID 不是持久的 它在每次调用后都会更改 有人有什么想法吗 简化的 PHP Api
  • Vue Axios 动态 URL

    我想在 vue js 应用程序中动态创建 axios post 操作的 URL 路径 这是动作 editProduct function dispatch commit payload axios put http localhost 80
  • ReactJS 中没有“Access-Control-Allow-Origin”

    我想知道如何在reactJS或react native环境中的axios post方法中设置Access Control Allow Origin 我使用 CORS 附加组件 它可以工作 但我也想在标头中设置它 我尝试了这些方法 但没有一个
  • 无法使用 Axios 或 SuperAgent 从 React 应用程序进行基本身份验证

    我尝试使用 axios 发出 GET 请求 但总是收到 401 仅当我从 React 应用程序发送请求时才会发生这种情况 axios get http localhost 8080 vehicles withCredentials true
  • Axios - 删除带有请求正文和标头的请求?

    我在 ReactJS 中编程时使用 Axios 并假装向我的服务器发送 DELETE 请求 为此 我需要标题 headers Authorization 身体是由 var payload username 我一直在互联网上搜索 只发现 DE
  • 在我的所有 vue 组件中全局使用 axios

    我正在 Vue 应用程序和 CLI 中使用 axios 进行测试 我一直在使用 vue resource 只需将其传递给 Vue use VueResource 即可在所有组件上访问它 如何使用 axios 实现此目的 这样我就不必将其导入
  • 使用reactjs下载文件无法正常工作(使用axios)

    我正在使用以下方法实现 YouTube 视频下载器ytdl核心 https www npmjs com package ytdl core带有 Nodejs 后端和 Reactjs 前端 但是 使用 ytdl core 库 我可以使用此代码
  • 更改 axios 的默认基本 url

    我已经像这样配置了我的 axios const axiosConfig baseURL http 127 0 0 1 8000 api timeout 30000 Vue prototype axios axios create axios
  • 将 axios POST 请求与 moxios 匹配

    是否可以使用 moxios 模拟对 POST 请求的回复 不仅通过 URL 匹配 还通过 POST 正文匹配 事后检查尸体对我来说也很有用 这就是我现在正在做的事情 据我所知 没有特定于方法的存根方法 describe createCode
  • React.js使用axios将数据发布到php,但php echo为空

    我正在使用react js axios和PHP将数据发布到MySQL数据库 这是我的react js代码 sendData var data new FormData data append name jessie data append
  • 在ReactJS中导出axios实例后如何修改它?

    我在用 axios defaults headers common Authorization Bearer token 在用户登录应用程序后设置标题 但刷新页面时此配置将被删除 当用户登录时 我想为来自 axios 的所有请求设置此配置
  • Axios:收到两个请求 OPTIONS 和 POST

    我正在尝试发布数据 一切正常 但我不知道为什么我收到两个请求OPTIONS POST POST OPTIONS 这是代码 const url http rest learncode academy api johnbob myusers e
  • axios默认超时是多少

    我在文档中找到了设置超时值的步骤 const instance axios create baseURL https some domain com api timeout 1000 headers X Custom Header foob
  • Axios-一次发出多个请求(vue.js)

    如何使用 axios 和 vue 并行发出多个请求 由于 axios 可以被 React 和 Vue 使用 因此代码几乎相同 请务必阅读axios 文档 https github com axios axios 你可以从那里理解它 无论如何
  • axios 拦截器内的 useContext

    我不明白为什么我的 useContext 没有在这个函数中被调用 import useContext from react import MyContext from contexts MyContext js import axios f
  • 我们可以使用 axios 的 onDownloadProgress 来加载 API 吗?

    我需要使用 axios 创建一个用于在 React 项目中加载 API 的进度条 我为此发现了 onDownloadProgress 函数 但我不知道我们是否可以使用它来获取诸如加载百分比之类的信息 或者它是否仅用于文件下载 所以我不确定我
  • Axios 与 Superagent

    如果我使用Axios https github com mzabriskie axios and 超级经纪人 https github com visionmedia superagent为了依次调用同一个 api 在这两种情况下 我都会首
  • axios 如何将 blob 与 arraybuffer 作为响应类型处理?

    我正在下载一个 zip 文件axios https www npmjs com package axios 为了进一步处理 我需要获取已下载的 原始 数据 据我所知 Javascript 有两种类型 Blob 和 Arraybuffers
  • React Native HTTPS Api 调用在 IOS 中有效,但在 Android 中无效

    所以基本上我所做的就是简单地对启用了 HTTPS 的 UAT 服务器进行简单的 Axios 调用 我已经在 IOS 中测试了整个应用程序 API 调用工作正常 但一旦我在 Android 中测试了相同的应用程序 在真正的 Android 设

随机推荐