import * as React from 'react';
/**
*
* @param reducers 由 reducer 組成的物件
* @returns React.useReducer 的第一個參數
* @example
* // 創建 reducer (reducer1, reducer2... )
* const reducer = (state: any, action: any) => {
* switch (action.type) {
* case "INCREMENT":
* return {
* ...state,
* a: state.a + action.step
* };
* case "DECREMENT":
* return {
* ...state,
* };
* default:
* return state;
* }
*}
*
* const combineReactReducer = combineReactReducers({
* reducer,
* reducer1,
* ...
* });
*/
export declare const combineReactReducers: (reducers: any) => (state: any, action: any) => any;
export interface ReactProviderProps {
/**
* 需要使用本Context的所有子組件
*/
children?: React.ReactNode;
/**
* 透過 createWowgoStore(reducer) 創建的Store,
* 註 : reducer: (initialState: any, action: any) => (any)
*/
store: {};
}
/**
*
* @param props
* @returns WowgoReactProvider
*
* @example
*
* const combineReactReducer = combineReactReducers({
* reducer,
* reducer1,
* ...
* });
*
* // 對應 combineReactReducer 的狀態初始值
* const initialState={ reducer: {}, reducer1: {}, ...}
*
* const App = () => {
* const [stroe, dispatch] = React.useReducer(combineReactReducer, initialState);
*
* // 還可以把 useState 放進 WowgoReactProvider 使用,稍後使用 useWowgoReactSelector 取得值
* // const [SomeState, setSomeState] = React.useState(null)
*
* return (
*
*
*
* );
* }
*
* export default App;
*
*/
export declare const WowgoReactProvider: React.FC;
/**
*
* @param selector 篩選函數
* @returns 篩選過後的狀態值
*
* @example
*
* export interface S {
* todo: number
* }
*
* const AboutPage = (props: any) => {
*
* const todo = useWowgoReactSelector(state => state.reducer1.todo)
*
* return (
*
* {todo}
*
* )
*
* export default AboutPage
*/
export declare const useWowgoReactSelector: (selector: (state: Type) => TSelected) => TSelected;