React 코드 디버깅 가이드: 프런트엔드 버그를 빠르게 찾아 해결하는 방법
인용문:
React 애플리케이션을 개발할 때 애플리케이션을 충돌시키거나 동작 오류를 일으킬 수 있는 다양한 버그에 자주 직면하게 됩니다. 따라서 디버깅 기술을 익히는 것은 모든 React 개발자에게 필수적인 능력입니다. 이 기사에서는 프런트엔드 버그를 찾고 해결하기 위한 몇 가지 실용적인 기술을 소개하고 독자가 React 애플리케이션에서 버그를 빠르게 찾고 해결하는 데 도움이 되는 특정 코드 예제를 제공합니다.
1. 디버깅 도구 선택:
React 애플리케이션에는 코드 디버깅에 도움이 되는 다양한 도구가 있습니다. 다음은 일반적으로 사용되는 몇 가지 디버깅 도구입니다.
2. React 구성 요소 예외 찾기:
샘플 코드:
할 일 목록을 표시하는 TodoList 구성 요소가 있다고 가정해 보겠습니다.
import React, { useState } from 'react'; function TodoList() { const [todos, setTodos] = useState([]); function addTodo() { setTodos([...todos, { id: Date.now(), text: 'New todo' }]); } return ( <div> <button onClick={addTodo}>Add Todo</button> {todos.map((todo) => ( <div key={todo.id}>{todo.text}</div> ))} </div> ); } export default TodoList;
할 일 목록을 렌더링할 때 오류가 발생하여 해당 렌더링 결과를 페이지에 표시할 수 없다고 가정해 보겠습니다. Chrome 개발자 도구의 Elements 패널을 사용하여 렌더링 예외가 있는지 확인하고 상태 및 Prop이 올바르게 전달되는지 확인할 수 있습니다.
샘플 코드:
할 일 목록을 렌더링할 때 의도적으로 오류가 발생하도록 위의 TodoList 구성 요소를 수정합니다.
import React, { useState } from 'react'; function TodoList() { const [todos, setTodos] = useState([]); function addTodo() { setTodos([...todos, { id: Date.now(), text: 'New todo' }]); } // 引发错误:todos.map is not a function const renderedTodos = todos.map((todo) => <div key={todo.id}>{todo.text}</div>); return ( <div> <button onClick={addTodo}>Add Todo</button> {renderedTodos} </div> ); } export default TodoList;
페이지를 새로 고친 후 Chrome 개발자 도구의 콘솔 패널을 확인하면 todos.map은 함수가 아닙니다
라는 오류 메시지를 볼 수 있습니다. 이 오류 메시지를 통해 todos.map
코드 줄에서 오류가 발생한 위치를 찾을 수 있습니다. todos.map is not a function
。通过这个错误信息,我们可以定位到错误发生的位置是在todos.map
这一行代码。
三、使用断点调试:
示例代码:
在上面的TodoList组件中,我们可以在点击按钮添加待办事项时设置一个断点。
import React, { useState } from 'react'; function TodoList() { const [todos, setTodos] = useState([]); function addTodo() { debugger; // 设置断点 setTodos([...todos, { id: Date.now(), text: 'New todo' }]); } return ( <div> <button onClick={addTodo}>Add Todo</button> </div> ); } export default TodoList;
刷新页面并打开Chrome开发者工具的Sources面板,然后点击按钮。代码会在debugger
샘플 코드:
import { createStore } from 'redux'; const initialState = { todos: [], filter: 'all', }; // 定义reducer函数 function reducer(state = initialState, action) { switch (action.type) { case 'ADD_TODO': return { ...state, todos: [...state.todos, action.payload], }; case 'SET_FILTER': return { ...state, filter: action.payload, }; default: return state; } } // 创建store const store = createStore(reducer); export default store;
디버거
라인에서 실행을 일시 정지하게 되며, 이때 코드 실행을 한 줄씩 보면서 변수 값이 맞는지 확인할 수 있습니다. 위 내용은 React 코드 디버깅 가이드: 프런트엔드 버그를 빠르게 찾아 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!