Оба проверяют, "является ли новое значение состояния истинным или ложным".
Визуализатор отображает className в соответствии со значением текущего состояния («если новое состояние истинно, сделайте что-нибудь, в противном случае сделайте что-нибудь другое»).
setState, с другой стороны, использует отрицательное значение, так как он хочет установить «лайки» на основе предыдущего значения («если новое состояние ложное, сделайте что-нибудь, иначе сделайте что-то другое»).
setState также может использовать state.liked
, а не !state.liked
, а затем вместо записи:
likes: (!state.liked) ? state.likes + 1 : state.likes - 1
Код будет:
likes: (state.liked) ? state.likes -1 : state.likes + 1
Итог - оба могут использовать state.liked
и, возможно, быть менее запутанными.