当您必须this在事件处理程序中使用关键字时,必须将函数(事件处理程序)与thiskerword绑定.否则,您需要使用箭头功能.
例如
//This function isn't bound whilst using "this" keyword inside of it.
//Still, it works because it uses an arrow function
handleClick = () => {
this.setState({
isClicked:true
});
}
render() {
return (
<div className="App">
<button onClick={this.handleClick}>Click</button>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
但是,使用上述方法,您无法传递参数.你需要使用......
bind(this, param) 功能之后即
<button onClick={this.handleClick}>Click</button>
will be
<button onClick={this.handleClick.bind(this, 111)}>Click</button>
or
<button onClick={() => this.handleClick(111)}>Click</button>
Run Code Online (Sandbox Code Playgroud)
这是个问题.
将参数传递给事件处理程序的最有效方法是什么?
根据官方文档,使用bind()可以破坏性能,因为......
每次组件渲染时,在render中使用Function.prototype.bind都会创建一个新函数
使用匿名箭头功能也是如此.医生说......
在渲染中使用箭头函数会在每次渲染时创建一个新函数
那么,传递参数的最有效方法是什么?
任何输入将不胜感激.
PS
有人问过如何 …
这是一个例子。
有3个测试文件
test
- customer.test.ts
- user.test.ts
- staff.test.ts
Run Code Online (Sandbox Code Playgroud)
它们每个都需要一个数据库连接(无论您使用什么数据库和 ORM),因此您将在所有测试文件中看到以下行。
describe('staff.test.ts', () => {
let testDb;
beforeAll(async () => {
testDb = await getTestDb(); // This returns a DB connection
});
afterEach(async () => {
await testDb.synchronize(true);
});
afterAll(async () => {
await testDb.close();
});
// tests are here
});
Run Code Online (Sandbox Code Playgroud)
在所有的文件中,
testDb总是用相同的函数实例化 ( getTestDb())beforeAll、afterEach、afterAll被复制/粘贴。我怎么能够...
beforeAllandafterAllafterEach每个测试用例?似乎globalSetup允许我导出“在所有测试套件之前触发一次的异步函数”。但是,我不仅必须运行beforeAll,而且还必须共享实例化的数据库连接。
可以实现吗?任何建议将被认真考虑!
我正在尝试使用 Postgres 并从 DBeaver 访问它。
根据此文档,如果您从 Windows 访问在 Linuc 上运行的应用程序,则localhost可以使用。
然而...
连接被拒绝,并显示localhost。另外,我不知道这条消息的含义:Connection refused: connect。
有人看到这个的潜在原因吗?任何建议将被认真考虑。
笔记:
psql并输入密码时,psql可以使用密码我对如何将 React Routerhistory.push('/route')与Redux.
换句话说,如果你将一个组件与 Redux 的 连接起来,你mapDispatchToProps如何放置history.push('/route')它应该在调度某个动作后被触发?
为了澄清这个问题,这是我的实验片段......
class PostContainer extends React.Component {
handleSubmit(data) {
return this.props.addPost(data);
}
render() {
return (<Post onSubmit={data=> this.handleSubmit(data)}/>);
}
}
const mapDispatchToProps = (dispatch) => {
return {
addPost: (data) => {
dispatch(addPost(data)).data.then((result) => {
dispatch(addPostFulfilled(result.data));
//How do you call the following function?
this.props.history.push('/posts')
}).catch((error) => {
dispatch(addPostRejected());
});
},
}
}
export default connect(null, mapDispatchToProps)(PostContainer);
Run Code Online (Sandbox Code Playgroud)
如您所见,只要通过 将帖子添加到 Redux 的状态addPostFulfilled,页面就需要/posts通过 history.push移动到。
根据 …
我一直在学习C++.
从这个页面,我明白ostream的重载"<<"运算符可以通过这种方式完成.
ostream& operator<<(ostream& out, Objects& obj) {
//
return out;
}
//Implementation
Run Code Online (Sandbox Code Playgroud)
和
friend ostream& operator<<(ostream& out, Object& obj);
//In the corresponding header file
Run Code Online (Sandbox Code Playgroud)
我的问题是...为什么这个功能需要"和"在结束ostream和Object?
至少我知道"&"习惯了......
但是,我认为它们都不适用于上述的重载.我花了很多时间在Google上搜索和阅读教科书,但我找不到答案.
任何建议将被认真考虑.
storage/app/我一直在尝试按照doc将文件存储到(并从中获取)。
运行后php artisan storage:link,我可以看到有一个指向 puiblic 文件夹的链接。
如果我放置一个包含以下代码的文件...
Storage::put('/images/blah.png', $file);
Run Code Online (Sandbox Code Playgroud)
...存储将如下所示。
我不太确定该链接是否正常工作,因为blah.png无法检索该链接。
到目前为止,我已经更改了storageby的访问级别chmod -R 755 storage/,并输入了完整的 URL(http://localhost:8000/storage/images/blah.png。这就是asset('storage/images/blah.png')返回的内容)。尽管如此,我还是收到了 404 错误(未找到)。
在config/filessystems.php。默认设置为local. (IE 'default' => 'local')
你看出我做错了什么吗?
任何建议将被认真考虑。
聚苯乙烯
这就是公共磁盘的配置的样子......
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL') . '/storage',
'visibility' => 'public',
],
//env('APP_URL').'/storage' returns 'root/storage/app/public'
Run Code Online (Sandbox Code Playgroud) 我一直在教自己如何在Laravel 5.5中编写测试用例.
我注意到,当我运行具有DatabaseMigrations特征的测试类时,运行测试后将删除与测试类相关的所有数据库表.
这是默认发生的吗?我没有在文档中找到任何线索.
任何建议将被认真考虑.
简而言之,是否可以在没有DB(而是使用User Provider)的情况下进行身份验证?
我见过有关如何在没有密码的情况下进行身份验证的帖子,但是如果没有DB,是否可以进行身份验证?
这是我一直在努力实现的目标......
Ask the user to submit a PIN
Compare the PIN with a value within .env
If the PIN is correct, authenticate the user
通过引入用户提供程序,似乎可以在没有传统RDBMS的情况下进行身份验证.
但是,doc似乎没有描述用户提供程序的外观.
这是我的代码的片段(好吧,我只是模仿了文档)...
class AuthServiceProvider extends ServiceProvider {
public function boot()
{
$this->registerPolicies();
Auth::provider('myUser', function ($app, array $config) {
// Return an instance of Illuminate\Contracts\Auth\UserProvider...
return new MyUserProvider($app->make('myUser'));
});
}
}
Run Code Online (Sandbox Code Playgroud)
在auth.php......
'providers' => [
'users' => [
'driver' => 'myUser',
],
],
Run Code Online (Sandbox Code Playgroud)
现在,我不知道如何继续. …
我已经阅读了一些关于 Laravel 的 CSRF 的问题,但我仍然没有找到如何在 React 中使用它。我的目标是制作一个 POST 表单,在那里我进行 AJAX 调用。
这是我的render( ).
render() {
return (
<form method="post" action="logpage">
<input type="hidden" name="csrf-token" value="{{{ csrf_token() }}}" />
//I'm sure this doesn't have csrf_token.
<input type="text" name ="word" value={this.state.word || ''}/>
<button onClick={this.submit} className="btn btn-flat btn-brand waves-attach waves-effect" data-dismiss="modal" type="button">Save</button>
</form>
);
}
Run Code Online (Sandbox Code Playgroud)
这是提交功能。
submit(){
fetch('/words', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
body: JSON.stringify({
//parameters
})
}).then((response)=>{
console.log(response);
});
}
Run Code Online (Sandbox Code Playgroud)
我假设问题$('meta[name="csrf-token"]').attr('content')是没有发送,因为没有生成令牌。但是,我不知道如何在 …
我一直在自学如何使用enzyme和测试 React 组件jest,但我对如何测试使用 React hooks 的已安装组件一无所知。
这是该组件的简化版本......
const [records, setRecords] = useState([]);
const onChange = async ({ value }) => {
try {
const request = await searchRecords();
console.log("Before setRecords");
setRecords(request.results);
console.log("After setRecords");
} catch (error) { /* error handling */ }
}
Run Code Online (Sandbox Code Playgroud)
测试代码看起来像...
let wrapped;
describe("Sample", () => {
beforeEach(() => {
jest.clearAllMocks();
wrapped = mount(
<Provider store={createStore(reducers, {})}>
<Sample />
</Provider>
);
api.mockImplementation(() => ({ results: searchResult }));
});
afterEach(() => { …Run Code Online (Sandbox Code Playgroud) laravel ×4
javascript ×3
reactjs ×3
jestjs ×2
laravel-5 ×2
php ×2
c++ ×1
enzyme ×1
laravel-5.5 ×1
laravel-5.6 ×1
phpunit ×1
postgresql ×1
react-dom ×1
react-hooks ×1
react-redux ×1
react-router ×1
redux ×1
wsl-2 ×1