Изменить стиль родительского элемента при нажатии дочернего элемента в React

Я новичок в React, я хочу знать, как изменить стиль div с идентификатором «parent» при нажатии на div с идентификатором «child».

<div id = "parent"></div>

#parent{display:block;}

var Products=React:createClass({
    showHide: function(){
        // change style of parent id's "display:block" to "display:none"
    },
    render: function(){
        return (
            <div id = "child" onclick = {this.showHide}>ABCD</div>
        );
});
ReactDOM.render(<Products />,document.getElementById('parent'));
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
3
0
4 362
1

Ответы 1

React обрабатывает это как односторонний поток данных. Родительские компоненты взаимодействуют с дочерними компонентами через реквизиты, а дочерние компоненты связываются с родителем через реквизиты обратного вызова. Вам необходимо передать опору обратного вызова дочернему компоненту от родителя, который затем обновит состояние родителя, которое затем обновит стиль, либо путем переключения опоры style (встроенный стиль), либо путем переключения класса CSS с помощью опоры className.

Вот пример, в котором дочерний компонент обновляет цвет переднего плана родителя с помощью опоры style. onTrigger - это просто пример имени, поскольку вы не указали контекст того, почему дочерний элемент обновляет родительский, но его можно назвать как угодно. ChildComponent может использовать onTrigger для передачи любых данных обратно родительскому элементу, после чего родитель может обрабатывать их по мере необходимости, как показано здесь в функции handleTrigger.

const ChildComponent = ({ onTrigger }) => (
  <div id = "child" onClick = {() => onTrigger("red")}>ABCD</div>
);

class ParentComponent extends React.Component {
  constructor(props) {
    super(props);

    // Set the initial state value
    this.state = { color: "green" };

    // One of a few ways to bind the function
    this.handleTrigger = this.handleTrigger.bind(this);
  }

  handleTrigger(color) {
    this.setState({ color: color });
  }

  render() {
    return (
      <div id = "parent" style = {{ color: this.state.color }}>
        <ChildComponent onTrigger = {this.handleTrigger} />
      </div>
    );
  }
}

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