如您所知,可以在新版本的Angular 4中使用Interceptor.
在我的,我想在某些条件下取消拦截器中的请求.那有可能吗?或者我应该问的是,我应该采取哪种方式?
它也会好的!如果我找到一种方法来重写对请求的一些响应而不是取消它.
除了我在组件类中声明的render方法 constructor 或自定义函数之外,有没有办法在另一个地方获取和处理上下文值?
以我所知的方式,消费者标签围绕着 fetch 函数,但是,我不想处理消费者标签中的值。
任何的想法?
我有一个像这样的简单组件。
import React, {useState} from 'react';
function MyComponentWithState(props) {
const [value, setValue] = useState(0);
return (
<p>My value is: {value}</p>
)
}
export default MyComponentWithState;
Run Code Online (Sandbox Code Playgroud)
我想将它作为单独的包发布在 NPM 上。因此,为此我准备了如下所示的package.json和webpack.config.js。
包.json:
{
"name": "try-to-publish",
"version": "0.0.1",
"description": "Just a test",
"main": "build/index.js",
"scripts": {
"start": "webpack --watch",
"build": "webpack"
},
"author": {
"name": "Behnam Azimi"
},
"license": "ISC",
"peerDependencies": {
"react": "16.9.0",
"react-dom": "16.9.0"
},
"dependencies": {
"react": "16.9.0",
"react-dom": "16.9.0",
"prop-types": "15.7.2",
"react-scripts": "3.1.1",
"webpack": "4.39.3"
}, …Run Code Online (Sandbox Code Playgroud) 我有三种类型的Authenticatable模型,我需要为每个模型分别进行JWT身份验证.让我解释一下我的问题.
我使用MongoDB作为我的数据库,Laravel MongoDB是我使用的包.
User,Admin和,ServiceProvider是我的模特.
要在Laravel中使用JWT auth,我使用jwt-auth包.用户模型(集合)没问题.当我想将JWT与任何其他型号一起使用时它无法工作并user再次完成所有工作.
我搜索了很多,我发现要更改提供者用户模型我可以使用Config::set();如下方法,
Config::set('jwt.user', Admin::class);
Config::set('auth.providers.users.model', Admin::class);
Run Code Online (Sandbox Code Playgroud)
但对JWT认证没有影响.(我检查的价值'jwt.user',并'auth.providers.users.model'与Config::get()方法,并返回它,它已被更改为'App\Admin').
需要说明的是,根据软件包的文档,我的代码尽可能简单.这是我的UserController代码:
class UserController extends Controller
{
public function login(Request $request)
{
$validator = Validator::make($request->all(), [
'email' => 'required|string|email|max:255',
'password' => 'required|min:6'
]);
if ($validator->fails()) {
return response()->json($validator->errors());
}
$credentials = $request->only('email', 'password');
try {
if (!$token = JWTAuth::attempt($credentials)) {
return response()->json(['error' => 'invalid_credentials'], …Run Code Online (Sandbox Code Playgroud) 我有一个 Provider 并且在它的 register 方法中我定义了一个这样的单例,
$this->app->singleton('my.custom.singleton', function ($app) {
$config_value = $app->make($this->config('key'));
return new MyClass($config_value);
});
Run Code Online (Sandbox Code Playgroud)
如您所见,我获得了一个配置值并将其作为参数放入我的类中。
在我项目的另一个地方,我改变了config('key')使用代码的价值:
Config:set('key',$my_changed_value);
我调用了一个方法,MyClass该方法使用我将它发送到上面提供程序中的类的参数。
但MyClass不使用 的新值config('key')。我认为这是因为单例已使用 config 的默认值定义。
我认为如果我可以在分配新的 config 值后重新定义单例就可以了。
或者我的问题有什么解决方案吗?我错了吗?我该怎么做才能使用 中的新值MyClass?
我有一个StatusContext这样命名的上下文:
export const statusCtxInit = {
open: false,
toggleOpen() {
this.open = !this.open;
}
};
const StatusContext = React.createContext(statusCtxInit);
export default StatusContext
Run Code Online (Sandbox Code Playgroud)
整个应用程序都与提供者一起包装:
// ...
<StatusContext.Provider value={statusCtxInit}>
// ...
Run Code Online (Sandbox Code Playgroud)
useContext为了使用我在 FC 中使用的上下文的值,当我获得该值时它就会起作用。
function MyComp() {
const status = useContext(StatusContext);
return (
<div>
{status.open
? `It's Open`
: `It's Closed`}
<button onClick={() => status.toggleOpen()}>
Toggle
</button>
</div>
)
}
export default MyComp
Run Code Online (Sandbox Code Playgroud)
另一方面,我也想通过调用来更改上下文toggleOpen,但是它不能按我想要的方式工作。实际上该值发生变化但不影响MyComp.
我做错了什么?我该怎么办?
这是我的自定义组件forwardRef。ref 在组件内部代码中是必需的,但父组件可以选择将其作为 prop 发送
const MyComponent = React.forwardRef((props, ref) => {
const handleButtonClick = () => {
// I need to access the ref here but, it's null
// when I not pass ref as prop to my component
}
return (
<>
<input type="text" ref={ref}/>
<button onClick={handleButtonClick}>Click</button>
</>
)
})
Run Code Online (Sandbox Code Playgroud)
我应该如何处理这个问题?我想要一个可选的 ref 作为道具,里面也需要它。
另外,我尝试useRef在我的组件中使用 并将转发的引用作为其初始值传递,在这种情况下,我无法访问父组件中的引用。
我是 Angular2 的新手。我想在一个li 中获取两个数组,如下所示:
[array1] 在 [array2] 中
例如,我有两个数组,第一个用于 Names,第二个用于 Ages,我想要这样的输出:
name in age
而且我知道可以为此使用二维数组,但我不想要。我想知道 ngFor 有哪些可能?
这是我的 Angular 代码:
@Component({
selector:'peaple',
template: `
<h2>{{title}}</h2>
<ul>
<li *ngFor="#name of names">
{{name}} in {{ages}} age
</li>
</ul>
`
})
export class PeapleComponent{
title = "Example";
Names =["N1","N2","N3"];
Ages=["20","15","37"];
}
Run Code Online (Sandbox Code Playgroud)
我想要这样的结果(但不改变数组格式)
我想从传入控制器的请求参数中删除现有项目。
这是我的控制器:
public function getIndex(Request $request)
{
// I need to remove a parameter from the $request here.
}
Run Code Online (Sandbox Code Playgroud)
实际上,我想在控制器中发送一个请求,但是当我创建一个这样的新实例时Request,
$new_request = new Request();
Run Code Online (Sandbox Code Playgroud)
并添加一些字段,$new_request如下所示:
$request->request->add([
'id' => '2',
'name' => 'test'
]);
Run Code Online (Sandbox Code Playgroud)
什么都没有添加!并且 dispatch 方法无法产生空请求的正确响应!但是当我使用现有的路由请求时,一切都好,除了额外的项目,我应该摆脱它们!
在我使用Laravel 5.6和MongoDB的项目中,为了验证更新方法中的输入,我使用了如下所示的验证器,
$validator = Validator::make($request->all(), [
'name' => 'string|max:255',
'phone' => 'string|valid_phone',
'email' => ['string', 'email', 'max:255',
Rule::unique('admins','email')->ignore($id),
],
'password' => 'string|min:6',
'access' => 'numeric',
]);
Run Code Online (Sandbox Code Playgroud)
我希望该字段是唯一的,并忽略具有特殊的用户的同一电子邮件$id。
一切看起来都不错!但是当我调用我的路由来更新我的用户并将用户的当前电子邮件作为电子邮件传递时,它会返回这样的验证器错误,
"email": [
"The email has already been taken."
]
Run Code Online (Sandbox Code Playgroud)
因此,唯一验证无法正常工作!
我也已经在我的用户模型中设置了$primaryKey='_id';。
有什么问题?我错过了什么吗?
我怎样才能node server.js -p通过pm2运行?
我的脚本package.json如下所示,
"scripts": {
"dev": "node server.js",
"start": "node server.js -p"
},
Run Code Online (Sandbox Code Playgroud)
当我执行npm start一切工作时,一切都真正有效。但我想用pm2运行这个命令。
要在我运行时执行此操作,该进程将添加到pm2pm2 start npm -- start列表中,但我的应用程序未运行!