React는 컴포넌트를 렌더링 한 후 전체 앱을 다시 렌더링합니다.

유진일 류신

내 웹 앱에서 react 및 redux를 사용합니다. 4 개의 구성 요소, 하나의 감속기 및 3 개의 동작이있는 간단한 앱입니다. 목록에 새 항목을 추가 한 후 react는 목록의 구성 요소 (listItem)를 렌더링 한 다음 전체 앱을 다시 렌더링합니다. 하나의 구성 요소를 렌더링 한 후 전체 앱을 다시 렌더링하는 원인은 무엇입니까?

업데이트 :

앱 컨테이너 :

class App extends Component {

    static propTypes = {
        groups: PropTypes.array.isRequired,
        actions: PropTypes.object.isRequired
    };

    render() {
        return (<div>
            <Header addGroup={this.props.actions.addGroup} />
            <List groups={this.props.groups} />
        </div>
        );
    }
}

function mapStateToProps(state) {
    return { groups: state.groups };
}

function mapDispatchToProps(dispatch) {
    return { actions: bindActionCreators(AppActions, dispatch) };
}

export default connect(mapStateToProps, mapDispatchToProps)(App);

줄이다:

export default function groupDiseases(state = initialState, action){
    switch (action.type) {
        case ADD_GROUP:
            return [
            {
                id: '',
                name: action.name
            },
            ...state
        ];

        case DELETE_GROUP:
             return state.filter(group =>
                group.id !== action.id
            );

        case EDIT_GROUP:
            return state.map(group => (group.id === action.id ? { id: action.id, name: action.name } : group));

        default:
            return state;
    }
}

구성품 :

export default class Add extends Component {

    static propTypes = {
        addGroup: PropTypes.func.isRequired
    }

    componentDidMount() {
        this.textInput.focus();
    }

    handleAdd = () => {
       const name = this.textInput.value.trim();
        if (name.length !== 0) {
            this.props.addGroup(name);
            this.textInput.value = '';
        }
    }

    render() {
        return (
        <form className="add_form">
            <input
                type="text"
                className="add__name"
                defaultValue=""
                ref={(input) => this.textInput = input}
                placeholder="Name" />
            <button
                className="add__btn"
                ref="add_button"
                onClick={this.handleAdd}>
                Add
            </button>
        </form>
       );
   }
}

export default class ListGroups extends Component {

    static propTypes = {
        groups: PropTypes.array.isRequired
    };

    render() {
        let data = this.props.groups;
        let groupTemplate = <div> Группы отсутствуют. </div>;
        if (data.length) {
            groupTemplate = data.map((item, index) => {
                return (
                <div key={index}>
                    <Item item={item} />
                </div>
                );
           });
       }

       return (
        <div className="groups">
            {groupTemplate}
            <strong
                className={'group__count ' + (data.length > 0 ? '' : 'none')}>
                Всего групп: {data.length}
            </strong>
        </div>
        );
    }
}
잭 태너

<form>타겟 .NET Framework에 제출하는 기본 동작을 계속 하도록 허용하기 때문일 수 있습니다 action. 버튼에 대한 w3c 사양을 살펴보세요.

http://w3c.github.io/html-reference/button.html

특히 type 속성이없는 버튼은 기본적으로 제출됩니다. 따라서 버튼은 제출할 양식을 알려주며, 제공된 페이지가 없으므로 대상이 현재 페이지입니다. 귀하의 handleAdd방법에서 다음과 같이 할 수 있습니다.

handleAdd = (event) => {
   event.preventDefault(); // prevent default form submission behavior
   const name = this.textInput.value.trim();
    if (name.length !== 0) {
        this.props.addGroup(name);
        this.textInput.value = '';
    }
}

또는 버튼을 수정하여 type="button".

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

여러 개의 다른 컴포넌트를 렌더링 할 수있는 동일한 React 컴포넌트를 여러 개 렌더링합니까?

분류에서Dev

useEffect에 대한 비동기 함수는 컴포넌트 렌더링 후 데이터를 가져옵니다.

분류에서Dev

jQuery는 요소를 렌더링 한 후 클릭 수신을 중지합니다.

분류에서Dev

notifyItemInserted는 전체 목록을 다시 렌더링합니다.

분류에서Dev

React.js는 컴포넌트를 어떻게 다시 렌더링합니까?

분류에서Dev

React Router Link는 컴포넌트를 렌더링하지 않지만 URL을 변경합니다.

분류에서Dev

오류 : 다시 렌더링이 너무 많습니다. React는 렌더링 수를 제한합니다.

분류에서Dev

React Native : 이전 렌더링 오류보다 더 많은 후크를 렌더링했습니다.

분류에서Dev

React에서 이전 렌더링 오류보다 더 많은 후크를 렌더링했습니다.

분류에서Dev

ng-repeat는 컨트롤러에서 행을 렌더링하기 전에 한 행을 표시합니다.

분류에서Dev

이전 렌더링보다 더 많은 후크를 렌더링했습니다.

분류에서Dev

React Native는 렌더링 전에 네트워크 호출을합니다.

분류에서Dev

Angular 9 : 컴포넌트를 다시 렌더링하는 방법

분류에서Dev

Openlayers는 사전 렌더링 및 사후 렌더링 이벤트를 사용하여 로딩 표시기를 추가합니다.

분류에서Dev

이벤트 수신 후 Wicket 컴포넌트를 다시 렌더링하는 방법

분류에서Dev

'useEffect'후크를 사용하여 React에서 컴포넌트가 다시 렌더링되지 않음

분류에서Dev

ReactJS에서 한 컴포넌트를 다른 컴포넌트 내에서 어떻게 렌더링합니까?

분류에서Dev

React : 컴포넌트는 버튼의 두 번째 onClick에서만 새 값을 렌더링합니다.

분류에서Dev

Rails는 현재 페이지를 다시 렌더링 한 후 자바 스크립트를 우회합니다 : GET 요청을 강제하는 방법?

분류에서Dev

Vue.js는 컴포넌트 렌더링 함수에 무한 업데이트 루프가있을 수 있다고 경고합니다.

분류에서Dev

React Hook 기능 컴포넌트가 다시 렌더링을 방지

분류에서Dev

angular2는 <tr>을 컴포넌트로 렌더링 할 수 없습니다.

분류에서Dev

Rails에서 React를 사용한 컴포넌트 렌더링이 작동하지 않습니다.

분류에서Dev

반응 : 버튼 클릭 후 컴포넌트 다시 렌더링

분류에서Dev

React Redux + Infinite Scroll = 전체 목록을 다시 렌더링합니까?

분류에서Dev

React는 동일한 div 요소를 다시 렌더링합니다 .- Reconciliation question

분류에서Dev

React-Router Redirect는 컴포넌트의 일부만 렌더링합니다.

분류에서Dev

Express는 원시 HTML을 텍스트로 렌더링합니다.

분류에서Dev

후크가있는 컴포넌트에서 불필요한 렌더링을 방지하는 방법

Related 관련 기사

  1. 1

    여러 개의 다른 컴포넌트를 렌더링 할 수있는 동일한 React 컴포넌트를 여러 개 렌더링합니까?

  2. 2

    useEffect에 대한 비동기 함수는 컴포넌트 렌더링 후 데이터를 가져옵니다.

  3. 3

    jQuery는 요소를 렌더링 한 후 클릭 수신을 중지합니다.

  4. 4

    notifyItemInserted는 전체 목록을 다시 렌더링합니다.

  5. 5

    React.js는 컴포넌트를 어떻게 다시 렌더링합니까?

  6. 6

    React Router Link는 컴포넌트를 렌더링하지 않지만 URL을 변경합니다.

  7. 7

    오류 : 다시 렌더링이 너무 많습니다. React는 렌더링 수를 제한합니다.

  8. 8

    React Native : 이전 렌더링 오류보다 더 많은 후크를 렌더링했습니다.

  9. 9

    React에서 이전 렌더링 오류보다 더 많은 후크를 렌더링했습니다.

  10. 10

    ng-repeat는 컨트롤러에서 행을 렌더링하기 전에 한 행을 표시합니다.

  11. 11

    이전 렌더링보다 더 많은 후크를 렌더링했습니다.

  12. 12

    React Native는 렌더링 전에 네트워크 호출을합니다.

  13. 13

    Angular 9 : 컴포넌트를 다시 렌더링하는 방법

  14. 14

    Openlayers는 사전 렌더링 및 사후 렌더링 이벤트를 사용하여 로딩 표시기를 추가합니다.

  15. 15

    이벤트 수신 후 Wicket 컴포넌트를 다시 렌더링하는 방법

  16. 16

    'useEffect'후크를 사용하여 React에서 컴포넌트가 다시 렌더링되지 않음

  17. 17

    ReactJS에서 한 컴포넌트를 다른 컴포넌트 내에서 어떻게 렌더링합니까?

  18. 18

    React : 컴포넌트는 버튼의 두 번째 onClick에서만 새 값을 렌더링합니다.

  19. 19

    Rails는 현재 페이지를 다시 렌더링 한 후 자바 스크립트를 우회합니다 : GET 요청을 강제하는 방법?

  20. 20

    Vue.js는 컴포넌트 렌더링 함수에 무한 업데이트 루프가있을 수 있다고 경고합니다.

  21. 21

    React Hook 기능 컴포넌트가 다시 렌더링을 방지

  22. 22

    angular2는 <tr>을 컴포넌트로 렌더링 할 수 없습니다.

  23. 23

    Rails에서 React를 사용한 컴포넌트 렌더링이 작동하지 않습니다.

  24. 24

    반응 : 버튼 클릭 후 컴포넌트 다시 렌더링

  25. 25

    React Redux + Infinite Scroll = 전체 목록을 다시 렌더링합니까?

  26. 26

    React는 동일한 div 요소를 다시 렌더링합니다 .- Reconciliation question

  27. 27

    React-Router Redirect는 컴포넌트의 일부만 렌더링합니다.

  28. 28

    Express는 원시 HTML을 텍스트로 렌더링합니다.

  29. 29

    후크가있는 컴포넌트에서 불필요한 렌더링을 방지하는 방법

뜨겁다태그

보관