Reactjs 反应-更改子组件状态值

Reactjs 反应-更改子组件状态值,reactjs,Reactjs,我有一个关于更改父级的子状态值的问题 我有一个类似下图的设计。选择datagridrow时,将向datagrid和父组件发送行信息。Datagrid组件将selectedRowId信息保持在其状态,父组件也将保持此状态。父组件有一个表单,当选择一行时,表单元素被填充。保存表单时,我希望清除网格中的行选择。但我找不到如何清理datagrid状态信息(selectedrowId) 我想让我的datagrid组件与redux隔离,因为我想使用datagrid一样的打包库。我也不想使用ref 我尝试了几

我有一个关于更改父级的子状态值的问题

我有一个类似下图的设计。选择datagridrow时,将向datagrid和父组件发送行信息。Datagrid组件将selectedRowId信息保持在其状态,父组件也将保持此状态。父组件有一个表单,当选择一行时,表单元素被填充。保存表单时,我希望清除网格中的行选择。但我找不到如何清理datagrid状态信息(selectedrowId)

我想让我的datagrid组件与redux隔离,因为我想使用datagrid一样的打包库。我也不想使用ref

我尝试了几件事,但都没有成功

任何帮助都将不胜感激,谢谢


我可能误解了这个问题,但我想做点什么

import React from "react";
import ReactDOM from "react-dom";

class A extends React.Component {
  state = {
    items: [0, 1, 2],
    selected: 0
  };

  select = val => {
    this.setState({
      selected: val
    });
  };

  reset = () => {
    this.setState({
      selected: 0
    });
  };

  render() {
    return (
      <React.Fragment>
        <B {...this.state} select={this.select} />
        <button onClick={this.reset}>reset</button>
      </React.Fragment>
    );
  }
}

class B extends React.Component {
  render() {
    return (
      <C
        items={this.props.items}
        select={this.props.select}
        selected={this.props.selected}
      />
    );
  }
}

class C extends React.Component {
  render() {
    const { items, selected } = this.props;

    return items.map(i => (
      <div
        onClick={() => this.props.select(i)}
        style={{ color: i === selected ? "red" : "black" }}
      >
        {i}
      </div>
    ));
  }
}

const rootElement = document.getElementById("root");
ReactDOM.render(<A />, rootElement);
从“React”导入React;
从“react dom”导入react dom;
类扩展了React.Component{
状态={
项目:[0,1,2],
已选:0
};
选择=val=>{
这是我的国家({
选定:val
});
};
重置=()=>{
这是我的国家({
已选:0
});
};
render(){
返回(
重置
);
}
}
类扩展了React.Component{
render(){
返回(
);
}
}
C类扩展了React.Component{
render(){
const{items,selected}=this.props;
返回items.map(i=>(
this.props.select(i)}
样式={{color:i==选中?“红色”:“黑色”}
>
{i}
));
}
}
const rootElement=document.getElementById(“根”);

ReactDOM.render(.

当您需要访问子组件中的状态时,一种常见的技术是to.。可能值得研究。正如您所说,如果我将selectedRowId值从父级发送到Datagrid,我就可以这样做,但我觉得这似乎是错误的。我认为selectedRowId值不应该设置在Datagrid之外,但这是最正确的方法。