Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击子元素时反应获取父元素的状态/数据_Javascript_Reactjs_Redux_Traversal - Fatal编程技术网

Javascript 单击子元素时反应获取父元素的状态/数据

Javascript 单击子元素时反应获取父元素的状态/数据,javascript,reactjs,redux,traversal,Javascript,Reactjs,Redux,Traversal,我有一个父元素li的构造,它包含一个链接和一个字体I。当我单击I时,我需要将父级标题(从redux状态)传递给函数 我是否需要遍历DOM树才能得到它 我是否以不同的方式设置事件处理程序 单击子元素时,如何访问父元素的状态 export default class DashContent extends React.Component { deleteBase(title) { this.props.dispatch(removeBase(title)) } render()

我有一个父元素
li
的构造,它包含一个链接和一个字体
I
。当我单击
I
时,我需要将父级标题(从redux状态)传递给函数

  • 我是否需要遍历DOM树才能得到它
  • 我是否以不同的方式设置事件处理程序
  • 单击子元素时,如何访问父元素的状态

    export default class DashContent extends React.Component {
      deleteBase(title) {
        this.props.dispatch(removeBase(title))
      }
    
      render() {
        const baseList = this.props.bases.map(base => (
          <li key={base.title} className="base">
            <Link to={base.title}>{base.title}</Link>
            <i className="fas fa-times" onClick={title => this.deleteBase(title)} />
          </li>
        ));
      }
    
      return (
        <ul>
          {baseList}
          <li>
            <AddBase />
          </li>
        </ul>
      )
    }
    
    导出默认类DashContent.Component{
    deleteBase(标题){
    此.props.dispatch(removeBase(标题))
    }
    render(){
    const baseList=this.props.bases.map(base=>(
    
  • {base.title} this.deleteBase(title)}/>
  • )); } 返回(
      {baseList}
    ) }
  • 不,您不需要遍历任何内容,您可以在onClick中直接传递它
  • 是的,你需要把你的onClick改成这样

    onClick={() => this.deleteBase(base.title)}
    
  • 现在在
    deleteBase
    函数中,标题作为参数传递

  • 您的第三点没有多大意义,因为您在同一个组件中,所以只有一个本地状态,父元素和子元素都可以访问。但这在您的情况下并不有用,因为您尝试访问的标题既不是本地状态也不是redux状态,而只是
    base
    对象本身的一个属性
    这里有点困惑。你是说对父母满意吗?您可以通过向子组件传递回调来访问父组件的状态。不完全是这样。您可以看到
    i
    是map函数的一部分。它呈现一个
    li
    ,其中有一个很棒的字体图标。当用户单击
    i
    时,我需要
  • 中的
    base.title
    。当前,当我单击
    i
    时,已调度的
    removeBase
    函数没有收到正确的
    基。title
    哦,你的问题很简单。只是,我没有明白:)你能简单地解释一下为什么我们不把标题作为参数传递给
    deleteBase
    函数吗?感谢您的有效回答您正在将参数传递给
    deleteBase
    函数。但是,您不能从
    onClick
    处理程序中获得它。您的
    地图中已经有了它。