문제
모든 JSX 요소는 첫 번째 (WitVault는 JSX가 브라우저에서 실행할 수있는 일반 JS에 transpiled하는 방법을 설명합니다) 객체로 만들어집니다. React는 React가 지원하는 객체와 속성을 사용하여 DOM 요소에 매핑합니다. React가 알지 못하는 속성이 있다면 "당신이하고있는 일을 알지 못한다"또는 "오타를 만들었습니다"중 하나 일 가능성이 높으므로 경고를 표시합니다. 따라서 당신은 당신이 기대하는 행동.
당신은 객체, 모든 오브젝트하는 sum
속성을 매핑하는 방법을 모르는 반작용도 재산 sum
를 얻을 반작용에 의해 생성하는, 그리고 원시 HTML 요소의 프로토 타입을 편집 때문에.
Juan Mendes이 지적한대로 extending native objects is bad practice. React 프로젝트에서 Object.prototype
을 확장하면 실제로 발생하는 문제를 피할 수 없습니다.
해결 방법 1 : 내보내기/가져 오기 폴더의 유틸리티 기능
이후 반응은 대신 유틸리티 메소드를 가져올 수 있습니다 browserify와 함께 제공됩니다.
- 당신은 네이티브 오브젝트
- 당신은 분명히 방법들이이 사용되는 파일의 가져 오기 문이 원인에서 온 사용 된 위치 표현을 확장 할 필요가 없습니다 :이 두 가지 이점이있다. ES5
// util/objectSum.js
module.exports = function(object) { ... };
// anotherFile.js
var objectSum = require('utils/objectSum.js'); // assuming utils/ is directly under the root path of your project (root path can be configured in webpack.config if you use webpack)
const object = ?; // the object you want to sum
const sum = objectSum(object);
에서 ES6
// util/objectSum.js
export default function objectSum(object) { ... };
// anotherFile.js
import objectSum from 'utils/objectSum.js'; // assuming utils/ is directly under the root path of your project (root path can be configured in webpack.config if you use webpack)
const object = ?; // the object you want to sum
const sum = objectSum(object);
에서
해결 방법 2 : 또한 합계 방법으로 클래스를 만들 수 있습니다 ES6에서 사용 ES6 클래스
. 예를 들면 다음과 같습니다.
class NumberList {
constructor(arrayOfNumbers) {
this.numbers = arrayOfNumbers;
this.sum = this.sum.bind(this);
}
sum() {
return this.numbers.reduce((sum, next) => sum + next, 0);
}
}
const numberList = new NumberList([1, 2, 3]);
numberList.sum(); // -> 6
어떻게 구성 요소를 구현하는 나쁜 생각입니까? 문제의 구성 요소를로드하는 HTML 또는 구성 요소를 공유 할 수 있습니까? –
간단한 div (예 :
코드를 공유 할 수 있습니까? –