我是新来的。所以我想把这段代码从react-router-dom-v4升级到react-router-dom-v6。我知道我们不能在v6中使用this . props . match . params . room code,我想知道如何升级它。任何帮助都将不胜感激。
import React, { Component } from "react";
import { useParams } from "react-router-dom";
function withHook(Component) {
return function WrappedComponent(props) {
const params = useParams();
// assuming :id is what you have on the route
return <Room {...props} roomCode={params.id} />;
};
}
class Room extends Component {
constructor(props) {
super(props);
this.state = {
votesToSkip: 2,
guestsCanPause: false,
isHost: false,
};
//props.roomCode is what you want
}
getRoomDetails() {
fetch("/api/get-room" + "?code=" + this.roomCode)
.then((response) => response.json())
.then((data) => {
this.setState({
votesToSkip: data.votes_to_skip,
guestCanPause: data.guest_can_pause,
isHost: data.is_host,
});
});
}
render() {
return (
<div>
<h3>{this.state.roomCode}</h3>
<p>Votes: {this.state.votesToSkip}</p>
<p>Guests Can Pause: {this.state.guestsCanPause.toString()}</p>
<p>Host: {this.state.isHost.toString()}</p>
</div>
);
}
}
export default withHook(Room);
类组件不支持挂钩
您不能在类组件内部使用钩子,但是您绝对可以在单个树中将类和函数组件与钩子混合使用。一个组件是一个类还是一个使用钩子的函数是该组件的实现细节。从长远来看,我们希望钩子成为人们编写React组件的主要方式。
https://react js . org/docs/hooks-FAQ . html # should-I-use-hooks-classes-or-a-mix-of-both
如果仍然不想将类组件转换为功能组件,请将 roomCode
作为 prop 添加到组件中,并使用 HOC 来完成繁重的工作。类似的东西
function withHook(Component) {
return function WrappedComponent(props) {
const params = useParams();
// assuming :id is what you have on the route
return <Room {...props} roomCode={params.id} />;
}
}
class Room extends Component {
constructor(props) {
super(props);
this.state = {
votesToSkip: 2,
guestsCanPause: false,
isHost: false,
};
this.roomCode = this.props.roomCode;
}
render() {
return (
<div>
<h3>{this.roomCode}</h3>
<p>Votes: {this.state.votesToSkip}</p>
<p>Guests Can Pause: {this.state.guestsCanPause.toString()}</p>
<p>Host: {this.state.isHost.toString()}</p>
</div>
);
}
}
export default withHook(Room)
或者迁移到功能组件。这一切都消失了。
const Room = () => {
const {id: roomCode} = useParams()
const [roomState, setRoomState] = useState({
votesToSkip: 2,
guestsCanPause: false,
isHost: false,
})
return (<div>Room details</div>)
}
希望这有所帮助
我正在开发小程序,我的类扩展了一个第三方api类,它有它的油漆(图形g)方法。这个类扩展了JComponent,并从它的油漆(图形g)调用super.paint(g)。现在我想直接从我的类调用JComponent油漆方法。有什么方法可以做到这一点。我在下面尝试,但给出错误 或者你可以通过跟随来理解这一点
希望专家能帮我解答硒/云闪之谜。我可以让一个网站在正常(非无头)硒加载,但无论我尝试什么,我不能让它加载在无头。 我遵循了StackOverflow帖子的建议,比如是否有无法检测到的SeleniumWebDriver版本?。我还研究了和对象并修复了无头和无头之间的所有差异,但不知何故,仍在检测无头。在这一点上,我非常好奇Cloudflare如何能够找出差异。谢谢你抽出时间! 我尝试过的事情列表:
您很快就会意识到,JDK8在Javadoc方面要严格得多(默认情况下)。(链接-参见最后一个项目符号) 如果您从未生成任何Javadoc,那么您当然不会遇到任何问题,但是像Maven发布流程这样的事情,可能还有您的CI构建,在使用JDK7时会突然失败。检查Javadoc工具的exit值的任何操作现在都将失败。与JDK7相比,JDK8 Javadoc在方面可能也更冗长,但这不是本文的范围。我们正在讨
简要描述 关于反射型的基本东西,暂时就到这啦,如果后面有什么好的 case,再做增补。最近,有些人会问到怎么绕过浏览器的 XSS 过滤 器,所以从这节开始,给出点绕过的例子。当然这些绕过浏览器的方法,不是万能的。不同浏览器,不同场景都会存在差异。满足场景 要求时,才可以使用。 此文给出的是一个来自 sogili 分享的 chrome 下绕过过滤器的方法,在腾讯某处 XSS 上的应用。 这一类都算是
问题内容: 我正在使用以下网址: 正如我在“ myserver.com”的“ access.log”中看到的那样,使用了客户端的系统代理。但是我想完全禁止使用代理。 问题答案: 我目前了解的 完全 禁用代理的唯一方法是: 建立会议 设置于 使用该会话创建您的请求 import requests session = requests.Session() session.trust_env = Fal