
Product
Rust Support Now in Beta
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
babel-helper-decorate-react
Advanced tools
Babel Helper for custom decorator for React Component
export const Button = () => {
return <button>button</button>
}
// decorate-enable-next-line { "argument": 123 }
export default class ButtonDefault extends React.Component {
// ...
}
// decorate-disable-next-line
export class Button2 extends React.Component {
// ...
}
import hoc from '/your/hoc/path'
export const Button = hoc()(() => {
return <button>button</button>
})
// decorate-enable-next-line { "argument": 123 }
export default
@hoc({ argument: 123 })
class ButtonDefault extends React.Component {
// ...
}
// decorate-disable-next-line
export class Button2 extends React.Component {
// ...
}
It's useful for decorate react component for react component, like use mobx-react observer
.
babelConfig
{
plugins: [
+ 'babel-helper-decorate-react/mobx'
]
}
babel-helper-decorate-react/mobx/decorate
const mobx = require('mobx-react')
module.exports = () => {
return (Component) => {
return mobx.observer(Component)
}
}
Input
export const Button = () => {
return <button>button</button>
}
/* mobx-observer-disable */
export const ButtonDisable = () => {
return <button>button</button>
}
/* mobx-observer-enable */
export default class ButtonDefault extends React.Component {
// ...
}
import decorate from 'babel-helper-decorate-react/mobx/decorate'
// To be observer component
export const Button = decorate()(() => {
return <button>button</button>
})
export const ButtonDisable = () => {
return <button>button</button>
}
// To be observer component
export default
@decorate()
class ButtonDefault extends React.Component {
// ...
}
npm install babel-helper-decorate-react
# or use yarn
yarn add babel-helper-decorate-react
import babel from '@babel/core'
import createDecorateReactVisitor from 'babel-helper-decorate-react'
babel.transform(code, {
plugins: [
{
visitor: createDecorateReactVisitor({
// ...opts
})
}
]
})
createDecorateReactVisitor(options?)
Options
extends createDecorateVisitor#Options
detectComponentName
Should detect react component name?
App
is valid, app
is invalid.
boolean
true
detectClassComponent
Should detect react class component?
boolean
true
detectFunctionComponent
Should detect react function component?
boolean
true
reactClassMemberTokens
The MemberExpression or Identifier tokens for Detecting React class component
string[]
['React.Profiler', 'React.Suspense', 'React.StrictMode', 'React.Fragment', 'Profiler', 'Suspense', 'StrictMode', 'Fragment']
reactClassSuperTokens
The super class tokens for Detecting React class component
string[]
['React.Component', 'React.PureComponent', 'Component', 'PureComponent']
reactClassCallTokens
The CallExpression tokens for Detecting React class component
string[]
['React.createRef', 'React.createFactory', 'React.createElement', 'React.cloneElement', 'createRef', 'createFactory', 'createElement', 'cloneElement']
reactClassMethodsTokens
The ClassMethod tokens for Detecting React class component
string[]
['componentDidUpdate', 'componentDidCatch', 'componentDidMount', 'componentWillMount', 'componentWillReceiveProps', 'componentWillUnmount', 'componentWillUpdate', 'UNSAFE_componentWillMount', 'UNSAFE_componentWillReceiveProps', 'UNSAFE_componentWillUpdate', 'getSnapshotBeforeUpdate', 'shouldComponentUpdate', 'render']
reactFunctionCallTokens
The ClassMethod tokens for Detecting React function component
string[]
['React.createRef', 'React.createFactory', 'React.createElement', 'React.cloneElement', 'createRef', 'createFactory', 'createElement', 'cloneElement', 'React.useCallback', 'React.useEffect', 'React.useMemo', 'React.useImperativeHandle', 'React.useLayoutEffect', 'React.useReducer', 'React.useContext', 'React.useState', 'React.useDebugValue', 'React.useRef', 'useCallback', 'useEffect', 'useMemo', 'useImperativeHandle', 'useLayoutEffect', 'useReducer', 'useContext', 'useState', 'useDebugValue', 'useRef']
prefix
Comment prefix for enable or disable decoration like eslint comment
/* decorate-disable */
/* decorate-enable */
// decorate-disable-next-line
// decorate-disable-line
// decorate-enable-next-line
// decorate-enable-line
string
'decorate'
decorateLibPath
The Path of decoration library.
string
null
moduleInteropPath
You may not use it.
string | null
require.resolve('module-interop')
defaultEnable
The decoration's status by default
you can use // decorate-enable-next-line
to enable when is disabled by default
boolean
true
detectScopeDepth
The visitorType matched scope depth.
-1
means allow any depth.
const Button = () => {
// scope depth: 2
const Inner = () => <button>inner</button>
// scope depth: 1
return <button>123</button>
}
number
-1
wrapFunctionComponentDecorateTokens
should wrap function component decorator
// Input
const Button = forwardRef(() => {
// scope depth: 1
return <button>123</button>
})
// Output
const Button = decorate()(
forwardRef(() => {
// scope depth: 1
return <button>123</button>
})
)
string[]
['forwardRef', 'React.forwardRef']
git checkout -b feature-new
or git checkout -b fix-which-bug
git commit -am 'feat: some description (close #123)'
or git commit -am 'fix: some description (fix #123)'
git push
This library is written and maintained by imcuttle, imcuttle@163.com.
MIT - imcuttle 🐟
FAQs
Babel Helper for custom decorator for React Component
We found that babel-helper-decorate-react demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
Product
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
Security News
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.