오류 메시지."Object/Array 타입의 제안서는 기본값을 반환하기 위해 공장 기능을 사용해야 한다."
나는 Vue-Cli3.0을 사용하고 있다.나는 이 모듈을 Vue.js에 사용했다.https://github.com/holiber/sl-vue-tree
이것은 Vue.js를 위한 사용자 정의 가능한 끌 수 있는 트리 구성 요소지만, 나는 그것이 개체의 기능을 복사할 수 없다는 것을 발견했다.
https://github.com/holiber/sl-vue-tree/blob/master/src/sl-vue-tree.js#L715
여기 때문에.
JSON.parse(JSON.stringify(entity))
그래서 나는 이 모듈을 사용하고 복사 기능을 편집했다.
https://www.npmjs.com/package/clone
var clone = require('clone');
copy(entity) {
return clone(entity)
},
이렇게 하면 사물의 기능이 올바르게 복사된다.
이미 테스트해 봤는데, 제대로 작동했어.공연에 문제가 없었는데 콘솔 오류가 생겼어.
[Vue warn]: Invalid default value for prop "multiselectKey": Props with type Object/Array must use a factory function to return the default value.
found in
---> <SlVueTree>
나는 이 오류를 지우는 방법을 알고 싶다.내 질문을 읽어줘서 고마워.
소품에서의 공장 기능은 다음과 같다.
props: {
exampleDefaultObject: {
type: Object,
default() {
return {}
}
},
exampleDefaultArray: {
type: Array,
default() {
return []
}
}
},
또는 ES6에서:
props: {
exampleDefaultObject: {
type: Object,
default: () => ({})
},
exampleDefaultArray: {
type: Array,
default: () => []
}
},
('유형 객체/어레이가 있는 경우 기본값을 반환하려면 공장 기능을 사용해야 한다'라는 질문에서 오류에 대한 설명을 찾으려는 사용자)
es6 화살표 함수로 개체를 반환할 때는 괄호가 필요하다는 점에 유의하십시오.() => ({})
대신에() => {}
당신의 콘솔 경고에 따르면, 나는 오류를 발견한다.
https://github.com/holiber/sl-vue-tree/blob/master/src/sl-vue-tree.js#L30
다음과 같이 해결하십시오.
multiselectKey: {
type: [String, Array],
default: function () {
return ['ctrlKey', 'metaKey']
},
validator: function (value) {
let allowedKeys = ['ctrlKey', 'metaKey', 'altKey'];
let multiselectKeys = Array.isArray(value) ? value : [value];
multiselectKeys = multiselectKeys.filter(keyName => allowedKeys.indexOf(keyName ) !== -1);
return !!multiselectKeys.length;
}
},
구성 요소 기본값은 공장 기능을 사용하여 반환해야 함!
그것을 시도하고 그것이 당신에게 도움이 되기를 바란다.
이러한 경우에는 객체나 배열이 아닌 기본값을 생성하는 기능보다 기능이 필요하다.
obj_param:{
type:Object,
default:()=>({})
},
array_param:{
type:Array,
default:()=>[]
},
이는 성능상의 이유로, 필요한 경우에만 함수가 호출되며(값이 없으므로 기본값 사용), 구성 요소를 사용할 때마다 직접 값이 인스턴스화되기 때문이다.
우리 반 구성 요소의 TS 형식에서 나는 그것을 다음과 같이 비슷하게 사용해 왔다.그것으로 나의 실수가 해결되었다.위와 같은 해결책은 트릭 앤 카틴카 덕분이다!
@Prop({default(){return []}}) private markerList!: Array<markerType>;
'programing' 카테고리의 다른 글
돌연변이 후 경로 변경(VueRouter) 모범 사례(Vuex) (0) | 2022.05.12 |
---|---|
Vuex에서 지도 상자 맵에 대한 중앙 집중식 상태를 설정하는 방법 (0) | 2022.05.12 |
Java에서 가져오기 이름 변경 또는 이름이 같은 클래스 두 개 가져오기 (0) | 2022.05.12 |
부동 소수점 값의 정밀도를 유지하기 위한 폭 지정자 인쇄 (0) | 2022.05.12 |
Vuex - 모듈 상태에 따라 계산된 속성이 디스패치 시 업데이트되지 않는가? (0) | 2022.05.12 |