微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的组件即使在调用渲染功能时也不会改变?反应

如何解决为什么我的组件即使在调用渲染功能时也不会改变?反应

我正在使用此方法从父组件更改子组件状态:

来自家长:

this.changeBottomToolbar(newTool)

在 Child 的类上声明的方法

changeBottomToolbar(newToolbarName){
    this.setState({selectedToolbar: newToolbarName})
  }

这是状态更改,并在我检查控制台时重新呈现。

渲染是一个条件渲染,它使用一个函数获取它应该渲染的内容

getBottomToolbar(){
    switch(this.state.selectedToolbar){
        case "SelectorAndText":
          console.log("Devolviendo el selector")
          return <TextBottomToolbar 
                    ref={this.bottomToolbarRef}

                    fontSizeUpdater    = {this.fontSizeUpdater}
                    fontColorUpdater   = {this.fontColorUpdater}
                    strokeColorUpdater = {this.strokeColorUpdater}
                    strokeSizeUpdater  = {this.strokeSizeUpdater}
                    fontFamilyUpdater  = {this.fontFamilyUpdater}
                    alignmentUpdater   = {this.alignmentUpdater}
                 />
        break
        case "FreeLine":
            console.log("Devolviendo el Line")
            return <LineBottomToolbar 
                    ref={this.bottomToolbarRef}

                    strokeColorUpdater = {this.strokeColorUpdater}
                    strokeSizeUpdater  = {this.strokeSizeUpdater}
                    shadowColorUpdater={this.shadowColorUpdater}
                    shadowSizeUpdater={this.shadowSizeUpdater}
                   />
        break
    }
}

我在渲染时调用它:

render(){
    const { classes } = this.props

    console.log(this.state.selectedToolbar)

    return (
      <React.Fragment>
        {
          this.getBottomToolbar()
        }
      </React.Fragment>
    );
  }

正如你在这图片中看到的,代码被正确执行并且当它的状态改变时它返回另一个组件

s

但是即使渲染它再次被调用并且它的状态它正在改变,但组件它没有改变,我完全震惊,我不知道为什么会发生这种情况,请帮忙!!

解决方法

所以问题是我错误地复制粘贴了导入(facepalm)

这是我正在做的导入,所以我认为它不会改变

pip install pandas

这更正了问题:

import TextBottomToolbar from './BottomToolbars/TextBottomToolbar'
import LineBottomToolbar from './BottomToolbars/TextBottomToolbar'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。