Почему я могу использовать this.state без необходимости связывать или использовать функцию стрелки React

Я знаю, что функции стрелок наследуют контекст родителя, поэтому они так полезны в React. Тем не менее, у меня есть этот компонент React:

import React, { Component } from 'react';
import { View, Text } from 'react-native';
import axios from 'axios';


class AlbumList extends Component {
    constructor(props) {
        super(props);
        this.state = {
            albums: [],

        };

        axios.get('https://rallycoding.herokuapp.com/api/music_albums')
            .then(response => {
                 this.setState({ albums: response.data });
            });
    }


    renderAlbums() {
        const { albums } = this.state;
        const array = albums.map(album => (
                <Text>{album.title}</Text>
            ));

        return array;
    }


    render() {
        return (
            <View>
                { this.renderAlbums() }
            </View>
        );
    }
}

export default AlbumList;

А также { this.renderAlbums() } работает полностью нормально без меня, чтобы преобразовать renderAlbums() в функцию стрелки. Я читал другие ответы на stackru, но все они упоминают, что вам нужна функция стрелки или bind Для того чтобы this работать правильно. Но в моем случае все работает нормально, так зачем использовать функцию стрелки внутри класса es6?

2 ответа

Решение

Если вы используете функции стрелок, то, что это "это", определяется блоком, в котором определена функция. Если вы используете "нормальные" функции, тогда "это" определяется местом, из которого вызывается функция. В этом случае вы вызываете его из метода рендеринга, поэтому "this" все еще является экземпляром компонента. Если вы попытаетесь вызвать подобную функцию из чего-то наподобие кнопки onClick, то не удастся найти "setState", поскольку "this" в основном будет определяться фактической визуализированной кнопкой, а не классом реакции.

Просто стрелки функции наследуют this из области видимости их родителей, но обычные функции наследуют this откуда функция вызывается

Другие вопросы по тегам