我想写入控制台的是用户将鼠标悬停在某个元素上超过 2 秒,这是代码:
var $els = document.querySelectorAll('#myDiv');
for(i = 0; i < $els.length; i++) {
if ($($els[i]).data('track') == 'hover') {
$els[i].addEventListener('mouseover', function (e) {
setTimeout(function() {
if ($($els[i]).is(':hover')) {
console.log('mouse is still over this element');
}
}, 2000);
});
}
}
Run Code Online (Sandbox Code Playgroud)
即使我将鼠标放在元素上的时间少于 2 秒,该消息也会在 2 秒后写入控制台。我可能在这里遗漏了一些东西:
if ($($els[i]).is(':hover')) {
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助
我正在使用 next.js、react18 和 next-auth。我有一个登录组件,可以检查会话并显示登录或注销链接,具体取决于您是否登录
import Link from 'next/link';
const Login = () => {
const {data: session} = useSession();
if (session) {
return <Link href="#"><a onClick={() => signOut({callbackUrl: `${window.location.origin}`})}>Sign out</a></Link>
} else {
return <Link href="#"><a onClick={() => signIn()}>Log in</a></Link>
}
Run Code Online (Sandbox Code Playgroud)
这曾经按预期工作,但后来我安装了react-bootstrap,我像这样更改了链接
import {Nav} from "react-bootstrap";
return <Nav.Link href="#"><a onClick={() => signOut({callbackUrl: `${window.location.origin}`})}>Sign out</a></Nav.Link>;
return <Nav.Link href="#"><a onClick={() => signIn()}>Log in</a></Nav.Link>;
Run Code Online (Sandbox Code Playgroud)
我开始收到这个错误
Error: Hydration failed because the initial UI does not match what was rendered on the server.
Run Code Online (Sandbox Code Playgroud)
我知道我可以降级到 React …
如何为每个环境设置不同的配置参数文件?
目前,参数parameters.yml都用于环境dev和prod环境,但我需要不同的参数才能在prod中部署我的应用程序.
我有这个实体
/**
* @ApiResource(
* collectionOperations={
* "get"={
* "access_control"="is_granted('IS_AUTHENTICATED_FULLY')"
* },
* "post"={
* "access_control"="is_granted('IS_AUTHENTICATED_FULLY')"
* }
* },
* itemOperations={
* "get"={
* "access_control"="is_granted('ROLE_ADMIN') or object.getUser() == user"
* },
* "put"={
* "access_control"="is_granted('ROLE_ADMIN') or object.getUser() == user"
* },
* "delete"={
* "access_control"="is_granted('ROLE_ADMIN') or object.getUser() == user"
* }
* }
* )
* @ORM\Entity(repositoryClass="App\Repository\FeedRepository")
*/
class Feed implements AuthoredEntityInterface
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="feeds")
* @ORM\JoinColumn(nullable=false) …Run Code Online (Sandbox Code Playgroud) 我有一个Product实体,与另一个与manyToOne关联的User实体相关
class Product implements AuthoredEntityInterface
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="products")
* @ORM\JoinColumn(nullable=false)
*/
private $user;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\Column(type="double")
*/
private $price;
//various getters and setters
}
Run Code Online (Sandbox Code Playgroud)
AuthoredEntityInterface有助于将用户设置为当前登录的用户。当我对/ api / products进行api调用(我使用邮递员)时,传递的json如下所示:
{
"name": "my product",
"price": 10
}
Run Code Online (Sandbox Code Playgroud)
这将起作用,并创建一个新记录。问题出在单元测试上。我打这样的电话:
$headers = [
'HTTP_AUTHORIZATION' => 'Bearer ' . $token,
'CONTENT_TYPE' => 'application/ld+json',
'HTTP_ACCEPT' => 'application/ld+json'
];
$postData = [
'name' => 'my product',
'price' => …Run Code Online (Sandbox Code Playgroud) 我有一个 txt 文件,其中有一行我想评论,我正在使用 sed
注释掉
sed -i 's/line1/#line1/' myfile.ini
Run Code Online (Sandbox Code Playgroud)
取消注释
sed -i 's/#line1/line1/' myfile.ini
Run Code Online (Sandbox Code Playgroud)
这是可行的,但问题是有时我会错误地运行两次,最后得到像这样的行
##line1
Run Code Online (Sandbox Code Playgroud)
所以当我运行取消注释命令时,该行现在是
#line1
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以切换评论?这是在 bash 脚本内,因此我很乐意在必要时添加几行。
谢谢
我有一个使用 redux 和 hooks 的 React 无状态组件。我需要在页面加载时显示项目数 (useEffect) 并在每次添加或删除项目时更新它 (store.subscribe)
useEffect(() => {
setState({
items: store.getState().items.length
});
}, []);
store.subscribe(() => {
setState({
items: store.getState().items.length
});
});
Run Code Online (Sandbox Code Playgroud)
但这导致控制台显示警告无法在未安装的组件上执行 React 状态更新。这是一个空操作,但它表明您的应用程序中存在内存泄漏。要修复,请取消 useEffect 清理函数中的所有订阅和异步任务。 .
如何从 useEffect 内部取消订阅?
我按照一些在线教程在 next-auth 中实现了这个
import NextAuth from "next-auth"
import Providers from "next-auth/providers";
const https = require('https');
export default NextAuth({
providers: [
Providers.Credentials({
name: 'Credentials',
credentials: {
email: { label: "Email", type: "email" },
password: { label: "Password", type: "password" }
},
async authorize(credentials) {
const url = 'https://localhost/auth';
const httpsAgent = new https.Agent({
rejectUnauthorized: false,
});
const res = await fetch(url, {
method: 'POST',
body: JSON.stringify(credentials),
agent: httpsAgent,
headers: {
"Content-Type": "application/json"
}
})
const user = await res.json();
if (res.ok …Run Code Online (Sandbox Code Playgroud) 我正处于设置 next.js 应用程序的早期阶段,到目前为止我只有使用 React 的经验。
我在 localhost:3000 上设置了一个前端应用程序 (next.js),在 localhost:5000 上设置了一个后端应用程序 (node.js/express)。他们都工作。
现在我尝试从前端调用快速端点,我正在做的是:
const registerUser = async event => {
event.preventDefault()
const res = await fetch(
process.env.NEXT_PUBLIC_SERVER + '/user/signup',
{
body: JSON.stringify({
username: event.target.name.value,
email: event.target.email.value,
password: event.target.password.value
}),
headers: {
'Content-Type': 'application/json'
},
method: 'POST'
}
)
result = await res.json()
}
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息
Access to fetch at 'http://localhost:5000/user/signup' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header …Run Code Online (Sandbox Code Playgroud) 我以这种方式使用dropzonejs:
<script type="text/javascript">
jQuery(function($) {
try
{
$(".dropzone").dropzone({
paramName: "file", // The name that will be used to transfer the file
maxFilesize: 0.5, // MB
uploadMultiple: true,
//addRemoveLinks : true,
dictDefaultMessage :
'<span class="bigger-150 bolder"><i class="icon-caret-right red"></i> Drop files</span> to upload \
<span class="smaller-80 grey">(or click)</span> <br /> \
<i class="upload-icon icon-cloud-upload blue icon-3x"></i>',
dictResponseError: 'Error while uploading file!',
//change the previewTemplate to use Bootstrap progress bars
previewTemplate: "<div class=\"dz-preview dz-file-preview\">\n <div class=\"dz-details\">\n <div class=\"dz-filename\"><span data-dz-name></span></div>\n <div class=\"dz-size\" data-dz-size></div>\n <img …Run Code Online (Sandbox Code Playgroud) 我有一个带有文件字段的表单,我希望只有在创建记录时才强制使用此字段,而不是在更新时。在 buildForm 我只有这个领域:
->add('file', 'file', array(
'required' => false,
))
Run Code Online (Sandbox Code Playgroud)
在控制器中,我检查 id 以决定是插入还是更新
谢谢
javascript ×5
reactjs ×4
symfony ×4
next.js ×3
php ×2
api ×1
bash ×1
cors ×1
dropzone.js ×1
express ×1
jquery ×1
linux ×1
next-auth ×1
node.js ×1
react-hooks ×1
redux ×1
sed ×1
symfony-2.8 ×1
symfony-3.4 ×1
symfony4 ×1