Ich möchte eine Komponente mit Stütze in einem Array oder Standardwert schaffen:prop oneOf Array oder Standard in React.js
<Component lang="en"/> // this.props.lang == en
<Component lang="fr"/> // this.props.lang == fr
Meine Komponente Nachricht eine nette Warnung auf Italienisch so <Component lang="it"/>
Anzeige noch nicht übersetzt :
Warning: Failed prop type: Invalid prop `lang` of value `it` supplied to `Component`, expected one of ["en","fr"].
Die Sprache meiner Komponente ist gleich it
, und ich möchte en
gleich sein. Irgendeine Idee? meine Tests
import React from 'react';
const Component = React.createClass({
propTypes: {
lang: React.PropTypes.oneOf(['en', 'fr'])
},
getDefaultProps() {
return {
lang: 'en'
};
},
render(){
return (
<h1>
lang: {this.props.lang}
</h1>
);
}
});
export default Component;
hier:
import assert from 'assert';
import React from 'react';
import {mount} from 'enzyme';
import Component from './Component';
describe('<Component />',() => {
it('get default prop',() => {
const wrapper = mount(<Component />);
assert.equal(wrapper.prop('lang'), 'en') // pass
});
it('get valid prop',() => {
const wrapper = mount(<Component lang="fr"/>);
assert.equal(wrapper.prop('lang'), 'fr') // pass
});
it('get invalid prop',() => {
const wrapper = mount(<Component lang="it"/>);
assert.equal(wrapper.prop('lang'), 'en') // fail
});
});
ja 'validation' prop ist toll, eine Warnung in meinem Browser-Konsole angezeigt werden soll. Danke für Ihren Vorschlag, ich hoffte, dass die API so freundlich sein könnte wie 'React.PropTypes.oneOf (VALID_LANGS, DEFAULT_LANG)' –