initial
This commit is contained in:
60
src/baseContextProvider.js
Normal file
60
src/baseContextProvider.js
Normal file
@@ -0,0 +1,60 @@
|
||||
import React from 'react'
|
||||
|
||||
const BaseContext = React.createContext({ base: 'Context' })
|
||||
|
||||
/**
|
||||
* Component : BaseContextProvider
|
||||
*
|
||||
* @author sl
|
||||
* @time 13/2/20
|
||||
* @param {{}}
|
||||
* @constructor
|
||||
*
|
||||
*/
|
||||
class BaseContextProvider extends React.Component {
|
||||
getContextReturnValue() {
|
||||
return {}
|
||||
}
|
||||
|
||||
getContext() {
|
||||
return BaseContext
|
||||
|
||||
throw new Error('Please Implement Context')
|
||||
}
|
||||
|
||||
render() {
|
||||
const contextReturn = this.getContextReturnValue()
|
||||
const Context = this.getContext()
|
||||
const { children } = this.props
|
||||
|
||||
//
|
||||
return <Context.Provider value={contextReturn}>{children}</Context.Provider>
|
||||
}
|
||||
}
|
||||
|
||||
export const baseContextWrap = (Provider) => {
|
||||
return (Component) => (props) => <Provider children={<Component {...props} />} />
|
||||
}
|
||||
|
||||
export function baseUseContext(context) {
|
||||
return function() {
|
||||
return React.useContext(context)
|
||||
}
|
||||
}
|
||||
|
||||
export function baseWithContext(context, contextPassPropKey) {
|
||||
const Consumer = context.Consumer
|
||||
return (Component) => (props) => (
|
||||
<Consumer>
|
||||
{(contextValue) => (
|
||||
<Component {...{ ...props, [contextPassPropKey]: contextValue }} />
|
||||
)}
|
||||
</Consumer>
|
||||
)
|
||||
}
|
||||
|
||||
BaseContextProvider.propTypes = {}
|
||||
|
||||
BaseContextProvider.defaultProps = {}
|
||||
|
||||
export default BaseContextProvider
|
||||
Reference in New Issue
Block a user