我有一个带有用户名输入的表单,我正在尝试验证用户名是否在去抖动功能中使用。我遇到的问题是,当我输入“user”时,我的去抖动似乎不起作用,我的控制台看起来像
u
us
use
user
Run Code Online (Sandbox Code Playgroud)
这是我的去抖功能
export function debounce(func, wait, immediate) {
var timeout;
return () => {
var context = this, args = arguments;
var later = () => {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
Run Code Online (Sandbox Code Playgroud)
这是我在 React 组件中调用它的方式
import React, { useEffect } from 'react'
// verify username
useEffect(() => {
if(state.username !== "") {
verify();
}
}, [state.username]) …Run Code Online (Sandbox Code Playgroud) 我正在尝试为在网络、桌面和本机应用程序之间共享代码的所有平台构建一个项目。有谁有使用 React、React-Native、Electron 和 WebPack 设置跨平台代码共享的经验,并且知道一些资源/示例来帮助我开始实现这一目标?
目录结构可能如下所示:
/resources (fonts, images)
/config (webpack config)
/fastlane (android + ios build/deployment)
/android (auto generated by expo or create-react-native-app maybe?)
/ios (auto generated by expo or create-react-native-app maybe?)
/web
/desktop
/src (components, styles, pages, routes, App.js, etc... all shared)
index.js
Run Code Online (Sandbox Code Playgroud)
我计划使用如下脚本运行和构建每个平台:
/package.json
"scripts": {
"ios": "react-native run-ios",
"android": "react-native run-android",
"desktop": "electron .",
"web": "webpack-dev-server --open",
"build: "webpack",
"desktop-build": "electron-builder --config config/electron.config.js",
"ios-build": "fastlane ios build",
"android-build": "fastlane android build"
}
Run Code Online (Sandbox Code Playgroud)
设置这个 webpack 配置似乎是最困难的部分。我什至不确定如何初始化这个项目。我对网络使用自定义 webpack …
我在开始使用 React、Apollo 和 AWS-AppSync 时遇到了问题。我无法解决此错误消息:
TypeError: this.currentObservable.query.getCurrentResult is not a function
Run Code Online (Sandbox Code Playgroud)
我正在使用@apollo/react-hooks 和 aws-appsync 的更新包。
我目前的设置看起来像这样。
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';
import config from './aws-exports';
import AWSAppSyncClient from 'aws-appsync';
import { ApolloProvider } from '@apollo/react-hooks';
const client = new AWSAppSyncClient({
url: config.aws_appsync_graphqlEndpoint,
region: config.aws_appsync_region,
auth: {
type: config.aws_appsync_authenticationType,
apiKey: config.aws_appsync_apiKey
}
});
ReactDOM.render(
<ApolloProvider client={client}>
<React.StrictMode>
<App />
</React.StrictMode>
</ApolloProvider>,
document.getElementById('root')
);
Run Code Online (Sandbox Code Playgroud)
我有一个函数可以进行如下查询:
import React …Run Code Online (Sandbox Code Playgroud) 我在我的reactJs应用程序中使用react-router-dom进行路由。我有一个路由,帐户,其中包含嵌套的路由。在“帐户”组件中,我想根据当前路线(param.id)显示不同的组件。现在,初始组件正在呈现,但是当我单击链接时,无论url中的变化如何,我的Account组件仍会呈现该初始组件。如何获取我的帐户组件以更新url的更改。还是我应该在AccountSwitch组件中做一些事情以识别url的更改并更新props.match.params.id的当前值?
// app.js
<Router>
<Route path="/account" component={Account} />
</Router>
// account.js
class Account extends Component {
render() {
return (
<div>
<Link to="/account">Messages</Link>
<Link to="/account/orders">Orders</Link>
<Route exact path="/account" component={Messages} />
<Route path="/account/:id" component={AccountSwitch} />
</div>
)
}
}
// accountSwitch.js
const AccountSwitch = props => {
switch(props.match.params.id) {
case '':
return (
<AccountMessages />
);
case 'orders':
return (
<AccountOrders />
)
default:
return <span>select a page<span/>
}
}
Run Code Online (Sandbox Code Playgroud) 我正在开发一个用于.htaccess重定向www.example.com/Name到个人资料页面的项目。我让它在单个单词名称上运行良好。问题是,如果名称是“San Francisco”,无论我如何尝试,我都会得到 404。下面是我的.htaccess.
RewriteRule ^([A-Za-z0-9]+)$ viewProfile.php?Name=$1 [L]
Run Code Online (Sandbox Code Playgroud)
我想知道如果我提供 URLwww.example.com/San_Francisco或类似的东西,我是否可以这样做。我阅读了一些与类似主题有关的其他问题,但从未找到可行的解决方案。
(似乎www.example.com/San%20Francisco是最好的,因为当我链接时,这当然是填充 URL 空间的内容)
我有一个使用 Vercel 部署的 NextJs 应用程序,但未设置 cookie。我进入控制台 > 网络,可以看到请求的状态为 200,并且 set-cookie 值存在且没有任何警告。我检查控制台 > 应用程序 > Cookie,但未找到 cookie。我在 StackOverflow 和 Github 上发现了一些类似的问题,但答案非常有限,似乎并没有促使我找到解决方案。
我的域结构是这样的:
domain.com
api.domain.com
subdomain.domain.com
nextapp.domain.com -> deployed through vercel
Run Code Online (Sandbox Code Playgroud)
域和子域应用程序是通过AWS部署的标准React应用程序,API是一个nodejs(express)应用程序。我对域和子域应用程序设置的 cookie 没有任何问题,因此我相信这是由 Vercel 引起的问题。我的 API 响应如下所示:
res.status(200).cookie('token', token, { httpOnly: true }).json(...)
Run Code Online (Sandbox Code Playgroud)
设置了这些 cors 选项
app.use(cors({
origin: true,
credentials: true
})
Run Code Online (Sandbox Code Playgroud)
我尝试更新以下响应中的 cookie 选项,但都没有效果。
{ httpOnly: true, sameSite: false, secure: true }
{ httpOnly: true, sameSite: 'none', secure: true }
Run Code Online (Sandbox Code Playgroud)
Vercel 中是否存在我应该注意的遗漏内容?
编辑
看起来这实际上可能是 Next.JS 的问题。我没有在 Next.js 中使用 API 层。我的请求看起来像这样: …
reactjs ×3
.htaccess ×1
apache ×1
aws-appsync ×1
debounce ×1
electron ×1
express ×1
graphql ×1
mod-rewrite ×1
next.js ×1
node.js ×1
react-apollo ×1
react-hooks ×1
react-native ×1
regex ×1
vercel ×1
webpack ×1