reactjs / reactjs/react-docgen
wrong `composes` for propType objects that are wrapped
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 3.8k
- Forks
- 316
- Avg merge
- 5h 7m
- Merged PRs (30d)
- 4
Description
Hello!
when defining prop types people do all sorts of things, for example:
import omit from 'lodash/omit';
import OtherComponent from 'important/path';
export default class Component extends React.PureComponent {
propTypes = {
...omit(OtherComponent.propTypes, ['exclude', 'us']),
something: bool
};
// ...
}
Expected
composes array is ['important/path']
Actual
composes array is ['lodash/omit']
i'm not even sure how this should be handled.
In example above it seems that extracting first argument from function
should be enough. But what if the composed prop types are not first
argument?
Should react-docgen support such cases at all? It seems valid to do so
from JS perspective but generated documentation is incomplete.
Recently https://github.com/reactjs/react-docgen/issues/248 was closed, so perhaps this issue should be considered too.
Thanks for the library!
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing how react-docgen derives the composes array from wrapped prop-type expressions, using the omit(OtherComponent.propTypes, ...) example as the reproduction. Compare the expected important/path result with the actual lodash/omit result and determine how non-first composed arguments should be handled. Done means the behavior is defined and covered for the supported wrapped-expression cases.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, react
- Domain
- documentation
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100