我正在使用React构建一个web应用程序,它将在用户每次单击按钮时显示不同的报价。我一直在寻找一种方法,让组件quotegenerator
在单击按钮时重新呈现/刷新,我尝试了本文中介绍的所有可能性,但都没有成功。
class QuoteGenerator extends React.Component {
constructor(props) {
super(props);
this.state = {num: Math.floor(Math.random() * quotes.length)};
}
render() {
return(
<div class="quoteBox">
<div class="quote">
"{quotes[this.state.num][0]}"<br/>
</div>
<button class="button btn" onClick={this.forceUpdate}>New Quote</button>
</div>
);
}
}
即使创建运行this.forceupdate()
或this.setstate()
的单独函数,并使用onclick
调用该函数,也不起作用;我想我一定是执行错了什么。有没有人知道我的错误在哪里?
看来你只选了一次报价。构造函数将在组件实例化时运行,但不会在每次单击时运行。
添加方法:
nextQuote() {
this.setState({
num: Math.floor(Math.random() * quotes.length),
});
}
并从您的onclick
中调用它(小心使用this
)。
通常情况下,您应该尽量避免使用forceupdate()
,只从render()
中的this.props
和this.state
读取。
我猜这可能与从父级打开有关,但我有其他组件,它们内部的状态发生变化,所以我有点困惑,为什么这个组件不尊重它的新状态。 谢谢
我是新来的反应。作为一个学习练习,我正在构建一个国际象棋应用程序 我想根据父级中的状态更改子级的DOM。当前,在父级组件的状态变化时,子级组件没有变化。 PS:请忽略任何语法错误。这段代码是实际代码的精简。如果你想看完整的代码,请看这里
在基于多个用户上下文呈现整个页面并发出多个请求之后,我希望用户能够切换上下文并再次重新呈现所有内容(重新发送所有请求,等等)。如果我只是将用户重定向到其他地方,事情就会正常工作: 如果使用,则上等待响应的某些请求将被取消,因此我不能使用它。此外,黑客也不起作用(什么也不会发生)。 有没有另一种方法可以重新呈现页面,而不用再次手动发出所有请求?
例如,当呈现表中的长元素列表时,对的任何调用,无论是否更改表用于枚举的数据,都会导致重新呈现每个子对象。 但是如果是这样的话,当那个链接里的元素数增加到说4000的时候,为什么点击的时候会有这么多的减速呢?当使用稍微复杂一些的自定义React组件时,只使用200个项目时,会注意到显着的减速。
以下是我的观点: 任何我的用户。java: 因此,当我在Name字段中键入一些内容并单击提交时,我希望看到带有id“问候语”的outputText,因为user.name渲染()应该返回true。 但是,我需要在提交名称后刷新页面才能看到它。为什么可能是原因?为什么它需要页面刷新?没有页面刷新我怎么能做到呢?