Comments (3)
Letting init
take generators would allow for "global" custom generators too. Maybe allow for all options to be defaulted.
const generators = {
string: propName => {
switch (propName) {
case 'insertedAt': return moment('01/01/2001', 'MM/DD/YYYY').format();
case 'updatedAt': return moment().format();
default: return propName;
}
}
generateProps.init({ generators, optional: true })
Component.propTypes = {
insertedAt: string.isRequired,
updatedAt: string,
name: string.isRequired,
}
generateProps(Component)
// => Current: { insertedAt: 'insertedAt', name: 'name' }
// => Proposed:
/* {
insertedAt: '2001-01-01T00:00:00-05:00',
updatedAt: '2019-06-13T11:21:11-04:00',
name: 'name'
} */
from react-generate-props.
A wrinkle: because we need to wrapPropTypes
, we need to know, during initialization, that these custom props exist. That might mean something like
import propTypes from 'prop-types'
import customPropTypes from 'lib/custom-prop-types'
generateProps.init(
[propTypes, customPropTypes],
{ generators: { empty: () => null } }
)
There might be overlaps in prop names there, though, so maybe...
generateProps.init({
generators: [
[propTypes.string, () => 'string'],
[customPropTypes.string, () => 'custom string'],
]
})
or just allow for namespacing...
generateProps.init({ propTypes, customPropTypes }, {
generators: {
propTypes.string: () => 'string',
customPropTypes.string: () => 'custom string',
}
})
from react-generate-props.
const myCheck = (props, propName, componentName) => ...
const myOtherCheck = (props, propName, componentName) => ...
generateProps.init({ myCheck, { otherCustomValidators: { myOtherCheck } } }, {
generators: {
myCheck: () => 'foo',
otherCustomValidators.myOtherCheck: () => 'bar',
}
})
from react-generate-props.
Related Issues (18)
- Handle defaultProps
- Support React 15.5 and above
- Allow for deterministic tests
- Use reducer initialState to generate props HOT 5
- { optional: true } doesn't generate deeply-nested optional props in shapes HOT 1
- generateProps should be able to take a PropType as its argument
- Wrapping of complex types seem to be broken HOT 9
- Generate reasonable values for all simple types
- Return more information in generator callbacks HOT 2
- High order component HOT 2
- Generators could receive prop name as argument HOT 6
- Add PropType.symbol support HOT 1
- Generate reasonable values for all complex types
- Generate PropTypes.exact
- Maybe generate values for non-required props
- Take generator overrides
- Support older node versions
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from react-generate-props.