Skip to content

Commit ea15af1

Browse files
Dayoung KangDayoung Kang
Dayoung Kang
authored and
Dayoung Kang
committed
feat: Add demo for setUserProperty
1 parent 6e6b72c commit ea15af1

File tree

6 files changed

+52
-0
lines changed

6 files changed

+52
-0
lines changed

demo/with-cra/src/App.tsx

+4
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import MainPage from './pages/MainPage';
33
import ProductsPage from './pages/ProductsPage';
44
import LoginPage from './pages/LoginPage';
55
import CurrencyPage from './pages/CurrencyPage';
6+
import UserPropertyPage from './pages/UserPropertyPage';
67
import Route from './router/Route';
78

89
function App() {
@@ -21,6 +22,9 @@ function App() {
2122
<Route path="/set-currency">
2223
<CurrencyPage />
2324
</Route>
25+
<Route path="/set-user-property">
26+
<UserPropertyPage />
27+
</Route>
2428
</div>
2529
);
2630
}

demo/with-cra/src/components/NavBar.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ const NavBar = () => {
4848
>
4949
Currency
5050
</NavItem>
51+
<NavItem href="/set-user-property">UserProperty</NavItem>
5152
</header>
5253
);
5354
};

demo/with-cra/src/index.tsx

+5
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ ReactDOM.render(
3939
fruitLogger.set(...args);
4040
toaster.set(...args);
4141
}}
42+
onSetUserProperty={params => {
43+
googleAnalytics.setUserProperty(params);
44+
fruitLogger.setUserProperty(params);
45+
toaster.setUserProperty(params);
46+
}}
4247
>
4348
<App />
4449
</AnalyticsProvider>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import {useEffect, useState} from 'react';
2+
import {useAnalyticsContext} from '@every-analytics/react-analytics-provider';
3+
4+
const SetUserPropertyPage = () => {
5+
const analytics = useAnalyticsContext();
6+
useEffect(() => {
7+
analytics.onPageView();
8+
}, [analytics]);
9+
10+
const [favoriteFood, setFavoriteFood] = useState('한식');
11+
const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {
12+
e.preventDefault();
13+
analytics.onSetUserProperty({favoriteFood});
14+
};
15+
16+
return (
17+
<form onSubmit={handleSubmit}>
18+
<br />
19+
<label>
20+
Pick your favorite flavor:
21+
<select value={favoriteFood} onChange={e => setFavoriteFood(e.target.value)}>
22+
<option value="한식">한식</option>
23+
<option value="중식">중식</option>
24+
<option value="일식">일식</option>
25+
<option value="양식">양식</option>
26+
</select>
27+
</label>
28+
<button type="submit">Submit</button>
29+
</form>
30+
);
31+
};
32+
33+
export default SetUserPropertyPage;

demo/with-cra/src/utils/fruitLogger/index.ts

+4
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,14 @@ const set = (...args: [string, UnknownRecord] | [UnknownRecord]) => {
1818
console.info('🥝Fruit Logger - Set', name, params);
1919
}
2020
};
21+
const setUserProperty = (params: UnknownRecord) => {
22+
set('user_properties', params);
23+
};
2124

2225
export const fruitLogger = {
2326
pageView,
2427
event,
2528
click,
2629
set,
30+
setUserProperty,
2731
};

demo/with-cra/src/utils/toaster/index.tsx

+5
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,14 @@ export const set = (...args: [string, unknown] | [unknown]) => {
4747
);
4848
};
4949

50+
export const setUserProperty = (params: unknown) => {
51+
set('user_properties', params);
52+
};
53+
5054
export const toaster = {
5155
event,
5256
click,
5357
pageView,
5458
set,
59+
setUserProperty,
5560
};

0 commit comments

Comments
 (0)