当前位置: 首页 > 知识库问答 >
问题:

访问儿童的状态是否被认为是好的(最佳实践)?

慕仲渊
2023-03-14

我有一个父组件,它有许多子组件(子组件是一个带有彩色背景的空div)。

我想改变孩子的颜色,但要确保我正在使它变成一个不同的颜色比它已经是-例如,如果孩子是蓝色的,我想改变它到另一个颜色,不是蓝色。

为此,我使用一个道具来设置初始颜色,并将此道具保存到孩子的状态。

当我点击div更改颜色时,我想访问div的当前颜色,以便我可以将其从选择中排除,当然可以从中进行选择

1)这被认为是可以做的反应吗?2)如果是——有人能解释一下我如何进入孩子的状态吗?3)如果这不是一个很好的方法,我应该如何解决这个问题?

class ColourBoxes extends Component {
constructor(props) {
    super(props)
    this.state = {

    }

    this.newColour = this.newColour.bind(this)
}

static defaultProps = {
    colours: ['#ff3860', '#498afb', '#fa8142', '#09c372', '#9166cc', '#ffdd57', '#ff4088']
}

newColour(oldColour) {

}

render() {
    return(
        <div>
            <Box colour={'#09c372'} ref="child"/>
        </div>
    )
}

}

   class Box extends Component {
    constructor(props) {
        super(props)
        this.state = {currColour: this.props.colour}
    }
    render() {
        return(
            <div className="Box" style={{backgroundColor: this.props.colour}}></div>
        )
    }
}

共有2个答案

尉迟韬
2023-03-14

既然你已经问过这是否是最佳实践,答案是否定的。状态应该在组件本身内部使用。对于跨组件共享数据,应使用道具。您可以使用Redux或上下文API来实现您的目的。

周麒
2023-03-14

我不认为你的方法适合REACT方式:组件的状态应该仅用于组件本身,即使可能,也应该被其他组件访问(我甚至不确定你是否会因为执行所以)。

在你的情况下,你应该提升你的状态,正如REACT官方文件所建议的那样。

基本上,您保留有关的信息

此外,通过在中包含状态

请注意,如果单击处理程序在中实现,这种方法是值得的。

 类似资料:
  • 首先让我说,“记录器”是指任何一类负责向用户或程序员报告诊断或进度信息的对象。根据这个定义,“记录器”将包括图形用户界面上的反馈,如进度条。 我们一再被告知要避免全局状态,尤其是全局可变状态(GMS)。因为伐木者天生是可变的,所以我最近试图让我的伐木者“不是全球性的”。我尝试了各种策略(比如通过构造函数向记录器注入引用)。我终于意识到,所有的方法都是把口红贴在猪身上。 日志记录器必须是所有类(或至

  • 然而,我不确定我是否理解他的观点,因为根据我的理解,当我们有一个父类引用变量指向子类对象时,一个行为被认为是多态的(侧重于动态多态性)。 然后在运行时获取父类变量所指向的实际对象,并调用其方法,如这里所解释的那样。 但是,我没有在我的项目中使用上向转换(即用对象类变量初始化POJO类)。 因此,我的问题是--尽管父类(对象)从未用作引用变量,但重写toString()是否被视为多态性? 我在Sta

  • 我正在按照这篇文章撤销用户访问权限: http://bitoftech . net/2014/07/16/enable-oauth-refresh-tokens-angular js-app-using-ASP-net-we b-API-2-owin/ 现在考虑一下,在验证用户之后,我已经发布了一个访问令牌,使用期限为30分钟,如上面的文章所示,刷新令牌为1天,但是如果管理员在10分钟内删除该用户

  • 问题内容: 如果我理解正确 给出与以下结果相同的结果 所以我想它更优雅。 我似乎还记得在JavaScript代码中看到过这种短路分配语句。但是在Python中在赋值语句中使用短路是否被认为是好的样式? 问题答案: 这确实是一个意见问题,但在大多数情况下,答案是否定的。它与多种样式指南背道而驰,可能是因为人们倾向于认为它的意思是“如果a为真,则使用b的值,否则使用c的值”,而不是您发布的实际含义。

  • 问题内容: 我正在开发一个网页,在那里我为类似国际象棋的游戏布置一块面板,以及几个棋盘托盘。所有操作都使用HTML(使用jQuery在游戏进行时进行动态更新)完成。在某个地方,我想到在页面中使用元素的绝对定位被认为是不好的做法,并且最好使用相对定位。 经过相对定位的困扰了很长时间之后,我意识到板元件的绝对定位要容易得多,而且要正确得多。 有谁知道相对定位优于绝对定位的原因吗?在决定采用哪种方法时,

  • 此存储区将保存在“Word-Count-Input”主题中找到的任何单词的最新计数。 假设消息成功发送到主题测试 这是否意味着从T构建的表上的所有交互查询都能立即看到更改?(生成为builder.table(“t”,...))? 这是否意味着从T聚合的表上的所有交互查询都能立即看到更改?(生成为Builder.Stream(“T”).GroupByKey().Aggregate(...))? nu