Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LogClick 구현 #7

Merged
merged 3 commits into from
Jan 31, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/Logger.ts"></script>
<script type="module" src="/src/demo/main.tsx"></script>
</body>
</html>
15 changes: 13 additions & 2 deletions src/LogClick.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
import { Children, cloneElement } from 'react';
import { useYLSLogger } from '.';
import { LogPayloadParams } from './types/LogPayloadParams';

interface Props {
children: React.ReactNode;
children: React.ReactElement;
params: LogPayloadParams;
}

export const LogClick = ({ children, params }: Props) => {
const logger = useYLSLogger();
const child = Children.only(children);

return <></>;
return cloneElement(child, {
onClick: (...args: any[]) => {
logger.click(params);

if (child.props && typeof child.props['onClick'] === 'function') {
return child.props.onClick(...args);
}
},
});
};
1 change: 1 addition & 0 deletions src/LogScreen.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { useYLSLogger } from '.';
import { useLocation } from 'react-router-dom';
import { useEffect } from 'react';
import { LogPayloadParams } from './types/LogPayloadParams';

interface Props {
children: React.ReactNode;
Expand Down
8 changes: 5 additions & 3 deletions src/Logger.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { LogPayloadParams } from './types/LogPayloadParams';

interface LoggerType {
path: string;
platform: string;
Expand All @@ -17,12 +19,12 @@ const createTimestamp = () => {
};

export const useYLSLogger = () => {
const screen = ({ path }: LoggerType) => {
const screen = ({ path }: LogPayloadParams) => {
// console.log(`Logging screen information for path: ${path}`);
};

const click = ({ name }: LoggerType) => {
// console.log(`Logging click information for button: ${name}`);
const click = ({ name }: LogPayloadParams) => {
console.log(`Logging click information for button: ${name}`);
};

return {
Expand Down
22 changes: 22 additions & 0 deletions src/demo/App.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { useState } from 'react';
import { LogClick } from '../LogClick';

export const App = () => {
const [count, setCount] = useState(0);

return (
<>
<h1>Vite + React</h1>
<div className="card">
<LogClick
params={{
userId: 123,
name: 'click',
}}
>
<button onClick={() => setCount((count) => count + 1)}>count is {count}</button>
</LogClick>
</div>
</>
);
};
9 changes: 9 additions & 0 deletions src/demo/main.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import React from 'react';
import ReactDOM from 'react-dom/client';
import { App } from './App';

ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
<App />
</React.StrictMode>
);
5 changes: 3 additions & 2 deletions src/types/LogPayloadParams.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
interface LogPayloadParams {
path: string;
export interface LogPayloadParams {
userId: number;
name: string;
path?: string;
message?: string;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여기 path는 저희 웹 routing path고 LoggerType의 path는 어떻게 되는걸까요?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LoggerType의 path도 동일하게 routing path입니다!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

흠.. 그러면 LoggerType의 path없애는거 어떨까용?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

엇 로그 내부 event에 path 들어가야 하는 거 아닌가요??

tags?: string[];
}
Loading