다양한 다양한 위젯을 입력으로 사용하도록 구성 할 수있는 일반 양식 필드를 Vue에 만들려고합니다. 나는 입력의 디렉토리를 가지고 올바른 하나를 가져 와서 내 구성 요소에 사용하고 싶습니다. 지금까지 나는 가져 오기 작업을 할 수조차 없습니다. 이 구성 요소는 양식을 구성하기 위해 스키마를 사용하는 React 용 Winterfell 라이브러리에서 영감을 얻었습니다. 표준 webpack 로더와 JSX에서 Vue를 사용하고 있습니다.동적으로 구성 요소를 가져 오는 방법
여기 내 간단한 FieldValue 구성 요소가 있습니다. ./inputs/TextInput (또는 이름으로 입력 하위 디렉토리의 다른 항목)과 같은 구성 요소를 동적으로 가져올 수 있어야합니다.
<script>
/* Schema format
{
id: 'ABCD',
label: 'Some text',
input: {
type: theNameOfTheInputComponentToUse,
options: {
...
}
}
}
*/
var Inputs = require('./inputs');
export default {
props: {
schema: {
type: Object,
required: true
}
},
render: function(h) {
// let Input = Inputs[this.schema.input.type];
let Input = require('./inputs/' + this.schema.input.type);
if (!Input) {
throw new Error('Unknown Input Type "' + this.schema.input.type + '". This component should exist in the inputs folder.');
}
return (
<div class="form-group">
<label for="{this.id}" class="col-sm-2 control-label">{this.schema.label}</label>
<div class="col-sm-10">
{JSON.stringify(this.schema)}
<input schema={this.schema} />
</div>
</div>
);
}
};
</script>
나는 그것이 컴파일되지 않습니다 응용 프로그램을 실행하려고 내가 콘솔에서 다음과 같은 오류가 발생합니다 :
This dependency was not found in node_modules:
* ./inputs
이 작업을 받고 어떤 도움은 매우 감사합니다!
감사에 의해 판단 장소에서 비슷한했다처럼
그것은 나에게 보인다. 이것은 입력 디렉토리의 모든 구성 요소를 미리 등록해야한다는 경고와 함께 작동합니다. require ('./ inputs')를 사용하면 여전히 빌드 오류가 발생합니다. JSX 대신 태그를 사용하여 동적 구성 요소를 사용하도록 변경했으며 작동하는 것 같습니다. –
Brian
'require ('./ inputs)'는 디렉토리에서 모든 것을 자동으로 가져 오는 것이 아니라 기본적으로'./inputs/index.js'를 가져 오기만을 시도합니다. 따라서 파일이 있는지 확인하고 다른 모든 파일을 가져 오는 것은 귀하에게 달려 있습니다. – mzgajner