我的反应路由器具有状态isActive(boolean)值。当我使用 Link 组件重定向到不同的路由时,我可以按如下方式更新状态并且它工作正常:-
<Link to={{
pathname: "my-home-page",
search: '?query=abc',
state: { isActive: true }
}}>Go to Home</Link>
Run Code Online (Sandbox Code Playgroud)
此外,当我使用 history.push 状态使用以下代码正确更新时:-
history.push({
pathname: '/template',
search: '?query=abc',
state: {
isActive: true
}
});
Run Code Online (Sandbox Code Playgroud)
但是,当我在 javascript 中使用 history.replace 时,我无法更新状态。我正在尝试下面的代码,但它不起作用。
history.replace({ pathname: 'home', search: '?query=abc', isActive: true});
Run Code Online (Sandbox Code Playgroud)
有谁知道我做错了什么?为什么我的状态在重定向时没有更新history.replace
我在最新的 react 16.5.2 中使用了 getDerivedStateFromProps 生命周期钩子。为什么我无法访问组件的 this 对象?有什么我做错了。
class EmailInput extends Component {
state = { email: this.props.defaultEmail };
handleChange = event => {
this.setState({ email: event.target.value });
};
getDerivedStateFromProps() {
this.doSomething();
}
doSomething = () => {
//do something here
}
render() {
return <input onChange={this.handleChange} value={this.state.email} />;
}
}
Run Code Online (Sandbox Code Playgroud) 我在服务器端使用 HapiJs 并希望根据角色进行路由配置,我想限制用户访问某些端点
var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection({ port: 8000 });
server.route({
method: 'GET',
path: 'api1',
handler: function (request, reply) {
reply('Hello, world!');
}
});
server.route({
method: 'GET',
path: 'api2',
handler: function (request, reply) {
reply('Hello');
}
});
server.route({
method: 'GET',
path: 'api3',
handler: function (request, reply) {
reply('Hello');
}
});
const parseHeader = (request, h) => {
const { role } = JSON.parse(request.headers["roles"]);
};
server.ext("onRequest", parseHeader);
server.start(function () {
console.log('Server running at:', server.info.uri);
}); …Run Code Online (Sandbox Code Playgroud) javascript ×4
reactjs ×2
hapijs ×1
node.js ×1
react-router ×1
vue-router ×1
vue.js ×1
vuejs2 ×1