useEffect我有一个下拉菜单,当更改时调用 api 使用钩子获取数据:
const [selectedComplianceFilter, setComplianceFilter] = useState("all");
useEffect(() => {
if (selectedComplianceFilter === "all") {
fetchFullReport();
} else {
fetchReportByCompliance(selectedComplianceFilter);
}
}, [selectedComplianceFilter]);
<select
name="compliance"
className="custom-select w-auto"
onChange={e => setComplianceFilter(e.target.value)}
>
<option value="all">All</option>
{compliances.map((compliance, i) => (
<option key={i} value={compliance}>
{compliance}
</option>
))}
</select>
Run Code Online (Sandbox Code Playgroud)
我有另一个useEffect钩子,它调用另一个返回扫描状态的 api
useEffect(() => {
fetchCompliances();
let intervalId;
getScanStatus(0);
fetchFullReport();
intervalId = setInterval(() => {
getScanStatus(intervalId);
}, 10000);
return () => {
componentDidUnmount.current = true;
clearInterval(intervalId);
};
}, []);
Run Code Online (Sandbox Code Playgroud)
这是获取扫描状态的函数:
const [scanStatus, …Run Code Online (Sandbox Code Playgroud) 假设我在页面顶部的列表项上有一些 setState 声明,如下所示:
<DropdownMenu >
<DropdownItem className="channel-setting__btn"
onClick={() => this.setState({ facebookFields: true, youtubeFields: true })}>All</DropdownItem>
<DropdownItem
className="channel-setting__btn"
onClick={() => this.setState({ facebookFields: true, youtubeFields: false })}>Facebook
</DropdownItem>
<DropdownItem
className="channel-setting__btn"
onClick={() => this.setState({ facebookFields: false, youtubeFields: true })}>Youtube
</DropdownItem>
</DropdownMenu>
Run Code Online (Sandbox Code Playgroud)
有什么方法可以让我在点击 DropDownItem 时,无论 DOM 元素呈现什么,页面都会自动平滑滚动到该部分或元素呈现在页面上的任何位置,在这种情况下,元素是 facebook 和 youtube 的不同形式,它们将呈现在最后并且太接近页面的末尾。
这是我的角度 5 代码:
gotToWallet(wallet) {
const { countryId = '', currencyType = '' } = wallet || {};
let walletIdentity;
switch (currencyType) {
case 'CRYPTO':
walletIdentity = 'userWalletIdentity';
break;
case 'FIAT':
walletIdentity = 'fiatWalletIdentity';
break;
case 'ERC20TOKEN':
walletIdentity = 'xbxUserWalletIdentity';
break;
}
const { currencyId = '' } = (wallet || {})[walletIdentity] || {};
this.router.navigate([`walletMgmt/wallet-details/${currencyId}/${countryId}`]);
}
Run Code Online (Sandbox Code Playgroud)
运行ng build命令时出现以下错误:
ERROR in src/app/wallet-management/wallets/wallets.component.ts(202,12): error TS2678: Type '"CRYPTO"' is not comparable to type '""'.
src/app/wallet-management/wallets/wallets.component.ts(205,12): error TS2678: Type '"FIAT"' is not …Run Code Online (Sandbox Code Playgroud) 我有一个在组件中useEffect初始化的组件,如下所示:wowjs
import WOW from "wowjs";
const HomePage = () => {
useEffect(() => {
const wow = new WOW.WOW({
boxClass: "wow",
animateClass: "animated",
offset: 0,
mobile: false,
live: true,
scrollContainer: null
});
wow.init();
}, []);
return (
<div>
....
</div>
)
}
Run Code Online (Sandbox Code Playgroud)
我希望useEffect在许多组件中使用此功能,以便wowjs动画可以在每次路线更改时运行。如何避免在我的 ReactJS 项目中重复此代码?
当我尝试运行时,git commit -m 'message here'出现以下错误。
fatal: cannot exec '.git/hooks/prepare-commit-msg': Permission denied
当我在 ubuntu 上创建一个新分区并在其中克隆存储库后,这个问题就开始了。
最近,我的一个朋友问我一个问题:
![]+1+[]+false
Run Code Online (Sandbox Code Playgroud)
经过评估我凭直觉去回答2。但是,当我在浏览器控制台中尝试该表达式时,得到的输出是"1false"。
对我来说,最奇怪的部分是1+[]哪个"1"?
我不明白为什么会这样,它如何运作?
有人可以解释一下吗?
谢谢
javascript ×3
reactjs ×3
react-hooks ×2
angular5 ×1
async-await ×1
dry ×1
git ×1
githooks ×1
setinterval ×1
typescript ×1
ubuntu-20.04 ×1
wow.js ×1