Хранить «просачивание» значение флага в государстве, и сделать это в функции render
.
Например:
getInitialState: function() {
return {
...
isStrikeThrough: false,
...
}
},
onHandleClick: function() {
....
// toggle the strikethrough state
this.setState({isStrikeThrough: !this.state.isStrikeThrough});
....
},
render: function() {
return (
<div>
<User
user={this.state.user}
strikeThrough={this.state.isStrikeThrough}
onClick={this.handleOnClick}
/>
</div>
);
},
Вы не дали никаких сведений о User
компонента, поэтому приведенное выше объяснение основано исключительно на том, что мы имеем в этом вопросе. Тем не менее, есть несколько способов, которыми это можно было бы улучшить.
Во-первых, я предполагаю, что вы можете добавить флаг зачеркивания в компонент User
и визуализировать <strike>...</strike>
(или сопоставимые стили CSS). Это может быть или не быть правдой (т. Е. Если компонент User
является сторонним компонентом, его может быть сложно изменить).
Во-вторых, состояние зачеркивания, описанное выше, похоже на то, что оно должно быть внутренним относительно компонента User
. Если все, что вы делаете, это изменение разметки в компоненте User
на основе щелчка на компоненте User
, тогда код зачеркивания должен быть в компоненте User
. И, возможно, что более важно, если зачеркивание должно представлять что-то важное для состояния пользователя, то, что должно быть сохранено как часть состояния пользователя, тогда зачеркнутый флаг должен быть частью состояния пользователя (и иметь более информативное название, чем isStrikeThrough
).
Как выглядит пользовательский компонент? –
Не похоже, что вы используете «стиль» где-нибудь, как только вы установите его в handleOnClick. Вам нужно установить какое-то состояние или что-то в этом роде. –
Вы можете сделать это так: https://jsfiddle.net/69z2wepo/36393/ –