>  기사  >  위챗 애플릿  >  WeChat 미니 프로그램이 백그라운드에서 대량의 중복 데이터를 반환하는 문제를 해결하는 방법

WeChat 미니 프로그램이 백그라운드에서 대량의 중복 데이터를 반환하는 문제를 해결하는 방법

不言
不言원래의
2018-08-16 17:20:014072검색

이 기사의 내용은 WeChat 애플릿이 백그라운드에서 대량의 중복 데이터를 반환하는 문제를 해결하는 방법에 대한 것입니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다. 너.

플랫폼 인터페이스는 배열에 N개의 개체가 있고 각 개체에 수십 또는 수백 개의 데이터가 있다는 것이 가장 흥미로운 점은 각 개체에 특정 두 개의 데이터만 필요하다는 것입니다. .... 이길 수 없습니다. 이길 수 있다면 그냥 싸우세요.

데이터가 너무 많으면 네트워크 요청에 큰 영향을 미치나요? 솔직히 말해서 큰 그림도 아니고, 몇 메가바이트의 사진도 아니고, 데이터를 반환하는 속도에서 지연을 느낄 수 없습니다.

하지만 데이터가 너무 많으면

작은프로그램
렌더링 인터페이스에 영향이 있을까요?
답은: 그렇습니다! 일반적으로 wxml에 데이터를 loop한 후 item.id와 item.name을 빼냅니다. 그 외의 데이터는 저희와는 관련이 없어 보이지만 공식문서 setData 관련 내용을 확인해 보면 다음과 같은 문단이 있습니다. #🎜🎜 #setData는 미니 프로그램 개발에 가장 많이 사용되는 인터페이스이자 성능 문제를 일으킬 가능성이 가장 높은 인터페이스이기도 합니다. 흔히 발생하는 잘못된 사용법을 소개하기 전에 setData의 작동 원리를 간략하게 소개하겠습니다.

작동 원리
애플릿의 뷰 계층은 현재 WebView를 렌더링 캐리어로 사용하는 반면 논리 계층은 독립적인 JavascriptCore를 실행 환경으로 사용합니다. 구조적으로 WebView와 JavascriptCore는 독립적인 모듈이며 직접적인 데이터 공유를 위한 채널이 없습니다. 현재 뷰 레이어와 로직 레이어 간의 데이터 전송은 실제로 양 당사자가 제공하는 평가Javascript를 통해 구현됩니다. 즉, 사용자가 전송한 데이터를 문자열로 변환하여 전달해야 함과 동시에 변환된 데이터 내용을 JS 스크립트로 엮은 후 실행을 통해 양쪽의 독립된 환경에 전달해야 합니다. JS 스크립트.
evaluateJavascript의 실행은 여러 측면의 영향을 받으며 뷰 레이어에 도착하는 데이터는 실시간이 아닙니다. 사실 setData의 모든 데이터는 문자열로 변환된 다음 문자열 우표가 JS 스크립트로 변환되고 페이지는 JS 스크립트에 따라 페이지를 렌더링합니다.

그렇다면 우리가 할 수 있는 것은 최대한 적은 데이터를 전송하는 것이고, 이때 이렇게 큰 데이터 문자열을 백그라운드로 반환하는 것은 이에 어긋나기 때문에 새로운 tempData를 생성하고, 필수 항목을 빼내는 것이 가장 좋습니다. data를 설정한 후 tempData를 Dta로 설정하면 WeChat Mini 프로그램의 페이지 렌더링 속도가 향상되고, WeChat Mini 프로그램의 운영 효율성이 향상되며, WeChat Mini 프로그램의 사용자 경험이 최적화됩니다.

다음과 같이 작성할 수 있습니다:

datas:[
 {
 id:1000,
 name: "帅哥",
 title: '...',
 b: '...',
 d: 0,
 f:0,
 ....
 },
 {
 id:1001,
 name: "美女",
 title: '...',
 b: '...',
 d: 0,
 f:0,
 ....
 },
 ...
]

또는 고차 함수 map()을 사용할 수 있습니다.
[mw_shl_code=applescript,true] var tempData = []
for(var i = 0; i < datas.length; i++) {
var tempObj = {}
tempObj.id = datas[i].id
tempObj.name = datas[i].name
tempData.push(tempObj)
}
console.log(tempData)
[/mw_shl_code]
이때 setData({})를 사용할 수 있습니다. 렌더링 효율성을 높이기 위해

두 개의 setData 기술을 동시에 공유

1 다음과 같은 개체가 있습니다

let tempDatas = datas.map(function(data){
 return {
 id: data.id,
 name: data.name 
 } 
 })
console.log(tempDatas)

이때, 페이지에 렌더링되었으며 obj를 수정한 후 다음을 선택할 수 있습니다.

1) 일반적인 접근 방식

obj:{a:"a",b:"b",c:"c"},

2) 하지만 더 최적화된 접근 방식은 # 🎜🎜#
let obj = this.data.objobj.b = "我是后来修改的"this.setData({ obj: obj})

절약할 뿐만 아니라 두 줄의 코드가 추가되어 페이지 렌더링 효율성도 향상됩니다. 2. 실제로는 1과 유사합니다. 즉, 원하는 경우 Object가 Array가 됩니다. 배열의 데이터 중 하나를 수정하려면 위의 방법을 참조하세요

this.setData({ &#39;obj.b&#39;: "我是后来修改的"})
#🎜 🎜#배열의 여러 데이터를 수정하려면 루프를 작성한 다음 배열을 수정합니다. 시간은 인식할 수 없습니다.

this.setData({ &#39;array[1]&#39;: "我是后来修改的"})

관련 권장 사항: #🎜 🎜#

WeChat 애플릿에서 시간 형식 지정 코드 구현

위 내용은 WeChat 미니 프로그램이 백그라운드에서 대량의 중복 데이터를 반환하는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.