react-docgen icon indicating copy to clipboard operation
react-docgen copied to clipboard

PropTypes.oneOf with named imports has weird result

Open superMDguy opened this issue 6 years ago • 0 comments

Example Component

import React from 'react'
import PropTypes from 'prop-types'
import { DEFAULT_NAME_1, DEFAULT_NAME_2 } from './constants'

export default class ExampleComponent extends React.Component {
  render() {
    return <div>Hello {name}</div>
  }
}

ExampleComponent.propTypes = {
  name: PropTypes.oneOf([DEFAULT_NAME_1, DEFAULT_NAME_2])
}

Output Docgen

{
  "description": "",
  "displayName": "ExampleComponent",
  "methods": [],
  "props": {
    "name": {
      "type": {
        "name": "enum",
        "value": [
          {
            "value": "import { DEFAULT_NAME_1, DEFAULT_NAME_2 } from './constants'",
            "computed": true
          },
          {
            "value": "import { DEFAULT_NAME_1, DEFAULT_NAME_2 } from './constants'",
            "computed": true
          }
        ]
      },
      "required": false,
      "description": ""
    }
  }
}

There's no perfect way to handle this (without trying to follow imports), but I'd prefer just using the name of the imported constant as the prop value, like what happens with import * as consts from './consts'.

superMDguy avatar Jul 16 '19 01:07 superMDguy