Skip to content

Commit

Permalink
Merge pull request #1444 from alibaba/rax-prop-types
Browse files Browse the repository at this point in the history
feat: support props check
  • Loading branch information
yuanyan authored Oct 25, 2019
2 parents e2617a4 + 3006aae commit 20c786a
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 11 deletions.
2 changes: 1 addition & 1 deletion packages/rax-create-class/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@
"devDependencies": {
"rax": "^1.0.0",
"driver-server": "^1.0.0",
"rax-proptypes": "^1.0.0"
"prop-types": "^15.7.2"
}
}
2 changes: 1 addition & 1 deletion packages/rax-create-class/src/__tests__/createClass.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
/* eslint react/prefer-es6-class: "off" */

import { createElement, render, shared } from 'rax';
import PropTypes from 'rax-proptypes';
import PropTypes from 'prop-types';
import ServerDriver from 'driver-server';
import createClass from '../';

Expand Down
12 changes: 5 additions & 7 deletions packages/rax/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,12 @@
},
"types": "./index.d.ts",
"dependencies": {
"driver-server": "^1.0.0",
"@babel/runtime": "^7.2.0",
"rax-is-valid-element": "^1.0.0",
"rax-clone-element": "^1.0.0",
"driver-server": "^1.0.0",
"rax-children": "^1.0.0",
"rax-create-factory": "^1.0.0"
},
"devDependencies": {
"rax-proptypes": "^1.0.0"
"rax-clone-element": "^1.0.0",
"rax-create-factory": "^1.0.0",
"rax-is-valid-element": "^1.0.0",
"prop-types": "^15.7.2"
}
}
2 changes: 1 addition & 1 deletion packages/rax/src/vdom/__tests__/context.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict';

import Component from '../component';
import PropTypes from 'rax-proptypes';
import PropTypes from 'prop-types';
import createElement from '../../createElement';
import Host from '../host';
import render from '../../render';
Expand Down
2 changes: 1 addition & 1 deletion packages/rax/src/vdom/__tests__/reactive.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
/* @jsx createElement */

import Component from '../component';
import PropTypes from 'rax-proptypes';
import PropTypes from 'prop-types';
import createElement from '../../createElement';
import Host from '../host';
import ServerDriver from 'driver-server';
Expand Down
15 changes: 15 additions & 0 deletions packages/rax/src/vdom/element.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import checkPropTypes from 'prop-types/checkPropTypes';

export default function Element(type, key, ref, props, owner) {
let element = {
// Built-in properties that belong on the element
Expand All @@ -10,6 +12,19 @@ export default function Element(type, key, ref, props, owner) {
};

if (process.env.NODE_ENV !== 'production') {
const propTypes = type.propTypes;

// Validate its props provided by the propTypes definition
if (propTypes) {
const displayName = type.displayName || type.name;
checkPropTypes(
propTypes,
props,
'prop',
displayName,
);
}

// We make validation flag non-enumerable, so the test framework could ignore it
Object.defineProperty(element, '__validated', {
configurable: false,
Expand Down

0 comments on commit 20c786a

Please sign in to comment.