Vue 发送数据请求
这边是将我之前开发的一个项目开发记录进行分享一下吧,可能写的不是很好,毕竟还只是一个在校生。只能说还是一个新手小白的开发记录吧。有需要的可以借鉴一下,有问题哈哈也欢迎指出,毕竟发现问题才能更好的进步。...
·
这边是将我之前开发的一个项目开发记录进行分享一下吧,可能写的不是很好,毕竟还只是一个在校生。只能说还是一个新手小白的开发记录吧。
有需要的可以借鉴一下,有问题哈哈 也欢迎指出,毕竟发现问题才能更好的进步
Vue 发送数据请求
首先,我们需要在终端 安装axios
npm install axios --save
这时候就可以在任何地方进行引用
需要用到的时候就在该地方输入
import axios from 'axios'
原先书写的方式
axios.post( "http://127.0.0.1:8000/axios-server", { account: document.getElementById("account").value, pwd: document.getElementById("psd").value, }, { //url params: { account: document.getElementById("account").value, pwd: document.getElementById("psd").value, }, //请求头参数 // headers: { // height: 180, // weight: 180, // }, // 设置请求体 } ) .then((value) => { console.log(value); });
每个页面单写接口 不方便统一修改管理 且重复过多
于是我们创建api页面 整个数据请求由api 页面进行发送
import axios from 'axios' const mytry2 = function (data) { axios.post( "http://127.0.0.1:8000/axios-server", { id: data }, { //url params: { id: data }, //请求头参数 // headers: { // height: 180, // weight: 180, // }, // 设置请求体 } ) .then((value) => { console.log(value); }); if (pwd.value == 123 && account.value == "root") { // window.location.href = ""; } else { alert("账号密码错误!"); } } // 这里再统一导出 export default { mytry, }
但是这样依旧也是太长了
我的代码
import axios from 'axios' // 一个方法封装 一次 export function mytry(data){ const url =`http://127.0.0.1:8000/axios-server` //要发送的路径 const mydata = `stuId=${data}` return axios.post(url,mydata) } // //只获取 信息 url 可以拼接 可以定义 // export function getStuInfo(){ // const url=`/user/getInfo` // return $http.post(url) // } // 这里再统一导出 就算前面用的是export 依旧还是得统一导出 export default { mytry, // mytry2 }
对于数据传输的格式
// API中 import axios from 'axios' // 一个方法封装 一次 可以选择在页面定义好data 进行拼接好 或者直接使用字符串拼接的方式发送 export function mytry(data){ const url =`http://127.0.0.1:8000/axios-server` // 字符串拼接 数据拼接的方式发送 const mydata = `adminAccount=${data.adminAccount}&adminPassword=${data.adminPassword}` return axios.post(url,mydata) } export function mytry2(data){ const url =`http://127.0.0.1:8000/axios-server` // 整个数据发送 return axios.post(url,data) } // 这里再统一导出 就算前面用的是export 依旧还是得统一导出 export default { mytry, mytry2 }
// 对应的vue 页面中 // 整个对象进行传输 var mydata ={ // 以下是已经获取定义好的 account psd, 直接使用键值对的形式 adminAccount:account, adminPassword:psd } api.mytry2(mydata).then(res=>{ if (1) { // window.location.href = ""; } else { alert("账号密码错误!"); } console.log(res); }).catch(res=>{ // 如果请求失败 console.log(res) alert("数据问题,请咨询管理员!") })
父向子组件传递
父组件关键语句:
<top v-bind:cmovies="movies" :cmessage="message"></top>
这里 是通过 v-bind 传递给子组件
cmovies 和 message 是在父组件中定义的数据
这里是父组件 的数据存放的地方**记得data(){} 里头一定要包含return{} 数据写在return{} 里
data() { // data 是一个实例 必须要有返回实例 return { message: "hello world!", movies: ["海王", "海贼王", "海尔兄弟"], }; },
子组件关键语句
// props: 是用来接受 父组件传递过来的数据的 props: ["cmovies", "cmessage"],
子组件的使用
//数据都拿到了 想怎么用不是都可以 最贱单的直接输出效果展示 {{cmovies}}
关于子组件拿父组件的数据实时更新问题
开发过程中 子组件会需要用到父组件传递过来的数据,但是单单只是通过设置 父向子组件传递,子组件接受还是不够的,会出现 能接受到数据,但是数据并不会跟随父组件的数据变化而变化的情况。
这时候就要用到watch 方法
data(){ return { // mydataMsg: '' mydataMsg: this.dataMsg, }, }, props:{ dataMsg: { type: String, // 这里写你接收的值是什么类型,什么类型就写什么类型 default:'' //这是设置接受的默认值, 如果没有接受到 就会使用这个默认值 如果是数组就写[] ,对象就写{} } }, watch:{ dataMsg(newVal,oldVal){ //newVal 是新值,oldVal 是旧值 this.mydataMsg= newVal } }
通过子组件调用 watch 的方式,就能够实时获取到父组件传递过来的实时更新的数据了
又是一个样式 一搓头发的一天
更多推荐
已为社区贡献1条内容
所有评论(0)