Каковы плюсы/минусы и лучшие практики создания функций для класса React Component?

Оба этих класса делают одно и то же, но ClassA кажется избыточным из-за привязки, которую вы должны выполнять каждый раз, когда объявляете функцию, а ClassB не кажется таким же чистым, как ClassA, из-за различий в типах создания функций.

class ClassA extends React.Component {
    constructor() {
        super();
        this.state = { message: "bar" };
        this.foo = this.foo.bind();
    }
    foo() {
        console.log(this.state.message);
    }
    render() {
        return <SomeComponent foo={this.foo} />;
    }
}

class ClassB extends React.Component {
    constructor() {
        super();
        this.state = { message: "bar" };
    }
    foo = () => {
        console.log(this.state.message);
    }
    render() {
        return <SomeComponent foo={this.foo} />;
    }
}

Чтобы избавиться от различий в создании функций в ClassB, вы, вероятно, можете сделать что-то вроде этого, где все является выражением.

class ClassC extends React.Component {

    state = { message: "bar" }

    foo = () => {
        console.log(this.state.message);
    }
    render = () => {
        return <SomeComponent foo={this.foo} />;
    }
}

Каковы плюсы и минусы между объявлениями функций и выражениями в этом случае? Есть ли различия в производительности, памяти или даже в ремонтопригодности?

Редактировать: я думаю, что с сегодняшней стандартной технологией разница в производительности не очень заметна. Я думаю, что я действительно хочу от этого вопроса, так это то, что является наилучшей практикой для создания функций для класса (особенно компонента React)


person Vongdarakia    schedule 29.09.2017    source источник
comment
@ scott-marcus Я отредактировал свой вопрос, чтобы объяснить, что речь идет больше о лучших методах кодирования, чем просто о производительности. Можете ли вы удалить повторяющийся статус, пожалуйста?   -  person Vongdarakia    schedule 29.09.2017
comment
Ссылка на разницу в производительности объявления функции и выражения функции на самом деле не ответила на мой вопрос :(   -  person Vongdarakia    schedule 29.09.2017
comment
Если у вас возникнут вопросы о передовом опыте, вы можете опубликовать их на codereview.stackexchange.com. Переполнение стека предназначено для конкретных вопросов по программированию.   -  person Scott Marcus    schedule 29.09.2017
comment
@СкоттМаркус Спасибо! Даже не знал, что такое существует!   -  person Vongdarakia    schedule 29.09.2017