Match-id-63ab7802bc94b2c6034d615683e1c3dc915e8db9
This commit is contained in:
parent
4b9e792fc6
commit
54ad44525e
|
@ -0,0 +1,3 @@
|
||||||
|
import { createContext } from 'horizon';
|
||||||
|
|
||||||
|
export const MockContext = createContext({value: 'default context value'});
|
|
@ -1,12 +1,26 @@
|
||||||
import { useState, useEffect, useRef, createContext } from 'horizon';
|
import { useState, useEffect, useRef, useContext, useReducer } from 'horizon';
|
||||||
|
import { MockContext } from './MockContext';
|
||||||
|
|
||||||
const Ctx = createContext();
|
const initialState = {count: 0};
|
||||||
|
|
||||||
|
function reducer(state, action) {
|
||||||
|
switch (action.type) {
|
||||||
|
case 'increment':
|
||||||
|
return {count: state.count + 1};
|
||||||
|
case 'decrement':
|
||||||
|
return {count: state.count - 1};
|
||||||
|
default:
|
||||||
|
throw new Error();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export default function MockFunctionComponent(props) {
|
export default function MockFunctionComponent(props) {
|
||||||
|
const [state, dispatch] = useReducer(reducer, initialState);
|
||||||
const [age, setAge] = useState(0);
|
const [age, setAge] = useState(0);
|
||||||
const domRef = useRef<HTMLDivElement>();
|
const domRef = useRef<HTMLDivElement>();
|
||||||
const objRef = useRef({ str: 'string' });
|
const objRef = useRef({ str: 'string' });
|
||||||
|
const context = useContext(MockContext);
|
||||||
|
|
||||||
useEffect(() => { }, []);
|
useEffect(() => { }, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -16,7 +30,7 @@ export default function MockFunctionComponent(props) {
|
||||||
count: {props.count}
|
count: {props.count}
|
||||||
<div ref={domRef} />
|
<div ref={domRef} />
|
||||||
<div>{objRef.current.str}</div>
|
<div>{objRef.current.str}</div>
|
||||||
<Ctx.Provider value={{ctx: 'I am ctx'}}></Ctx.Provider>
|
<div>{context.ctx}</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
|
@ -1,18 +1,20 @@
|
||||||
import { render } from 'horizon';
|
import { render } from 'horizon';
|
||||||
import MockClassComponent from './MockClassComponent';
|
import MockClassComponent from './MockClassComponent';
|
||||||
import MockFunctionComponent from './MockFunctionComponent';
|
import MockFunctionComponent from './MockFunctionComponent';
|
||||||
|
import { MockContext } from './MockContext';
|
||||||
|
|
||||||
const root = document.createElement('div');
|
const root = document.createElement('div');
|
||||||
document.body.append(root);
|
document.body.append(root);
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
|
<MockContext.Provider value={{ ctx: 'I am ctx' }}>
|
||||||
|
<MockClassComponent fruit={'apple'} />
|
||||||
|
<MockFunctionComponent />
|
||||||
|
</MockContext.Provider>
|
||||||
abc
|
abc
|
||||||
<MockClassComponent fruit={'apple'}/>
|
|
||||||
<MockFunctionComponent />
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
render(<App/>, root);
|
render(<App />, root);
|
||||||
|
|
Loading…
Reference in New Issue