小编vsy*_*ync的帖子

禁用焦点内容中的 Tab 键模糊可编辑

我完全知道这个问题看起来像是重复的,但事实并非如此。请阅读。

我有一个div带有属性的标签contentEditable="true"。我正在尝试这样做,以便我可以在div不移动焦点的情况下使用 tab 键。这是我拥有的一些不能完全解决问题的代码:

var tab = function(id){
 if(event.keyCode === 9){
    event.preventDefault();
    document.getElementById(id).innerHTML += "    ";
    setCaretPos(id);
 }
}

var setCaretPos = function(id){
   var node = document.getElementById(id);
   node.focus();
   var textNode = node.firstChild;
   var caret = textNode.length;
   var range = document.createRange();
   range.setStart(textNode, caret);
   range.setEnd(textNode, caret);
   var sel = window.getSelection();
   sel.removeAllRanges();
   sel.addRange(range);
}
Run Code Online (Sandbox Code Playgroud)

这基本上只是在 div 内文本值的末尾添加四个空格,然后将插入符号移动到末尾。当我在其他行上使用制表符时,这会成为一个问题,因为它只会将制表符添加到末尾(如果我不在最后一行)。

所以,我想插入插入符号所在的四个空格。这就是麻烦的地方。我会展示代码,但我不确定我做错了什么。我希望它在插入符号之前的文本中添加四个空格,然后在插入符号之后添加所有文本。这是代码:

var insertTabAtCaret = function(id){
   if(event.keyCode === 9){
       event.preventDefault();
       var box = document.getElementById(id);
       if(box.selectionStart || box.selectionStart == "0"){
           var startPos = …
Run Code Online (Sandbox Code Playgroud)

javascript contenteditable tabbing

3
推荐指数
1
解决办法
1273
查看次数

理解承诺和等待

我只是想了解PromisesAwait是如何工作的.
我希望通过1, 2, 3以该顺序登录来解决此问题.目前它记录1, 3, 2.

我知道Promise在这里没有意义,但在我的程序中它有其他用途,所以需要留下来.从Caller功能到Test需要留下的路线(如果需要你可以改变这些但只是知道他们在那里是有原因的)

我的问题是如何等待Caller函数解决?

这是我的代码:

function Test() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      console.log('2');
      resolve();
    }, 2000);
  })
}

function Caller() {
  Test();
}

console.log('1');
Caller();
console.log('3');
Run Code Online (Sandbox Code Playgroud)

我已经尝试了我所理解的,即使Caller()函数等待Test Promise,但这当然使得Caller()函数异步,因此我们仍然得到1,3,2

async function Caller() {
    await Test();
}
Run Code Online (Sandbox Code Playgroud)

是否有一些方法可以使用await而不使函数异步?

javascript promise async-await

3
推荐指数
1
解决办法
76
查看次数

将屏蔽/取消屏蔽按钮放置在密码输入元素内

在此输入图像描述

我想将切换隐藏/显示的睁眼引导图标添加到我的输入字段。我已经知道 javascript 可以做到这一点。我只想知道如何将该眼睛图像添加到输入字段。

从 W3 学校找到了这个 html 代码 - 用于眼睛图标 https://www.w3schools.com/icons/tryit.asp?filename=trybs_ref_glyph_eye-open

html css

3
推荐指数
1
解决办法
6940
查看次数

react-popper:使用 scheduleUpdate 重新定位

我正在使用React-popper单击按钮后,显示日期选择器元素。

JSX

<Manager>
    <Reference>
        {({ ref }) => (
            <button ref={ref} onClick={this.onDateRangeBtnClick}>click to show</button>
        )}
    </Reference>
    {ReactDOM.createPortal(
        <Popper placement="auto-end" >
            {({ ref, style, placement, arrowProps, scheduleUpdate }) => (
                <div className={`dayPickerOverlay ${this.state.showDatePicker ? "" : "hidden"}`} ref={ref} style={style} data-placement={placement}>
                    <DateRangePicker />
                </div>
            )}
        </Popper>,
        document.querySelector('#root')
    )}
</Manager>
Run Code Online (Sandbox Code Playgroud)

onDateRangeBtnClick单击按钮后调用when ,我想通过调用重新定位 Popper 元素scheduleUpdate方法,但我不知道如何处理。

我如何公开scheduleUpdate要在 JSX 内部onDateRangeBtnClick调用的特定函数,或者如何有条件地调用scheduleUpdateJSX 本身内的函数(就此而言)?

javascript popper.js react-popper

3
推荐指数
1
解决办法
4596
查看次数

仅替换 URL 中的最后一个路径部分

我正在使用react-router-dom v4.3.1.

例如:我有以下网址 http://localhost:3000/url1/url2/url3

我只需要替换 URL 中的最后一条路由:/url3/mynewroute3

历史怎么做?

url browser-history reactjs react-router

3
推荐指数
2
解决办法
4320
查看次数

如何使 react-chartjs-2 在移动设备上响应?

我在我的一个项目中使用 react-chartjs-2 并且我找不到图表的问题,因为在移动设备上所有标签和图例仍然很大。我试过了responsive: truemaintainAspectRation: true。没有任何效果

这是它在小型设备上的显示方式

javascript reactjs chart.js

3
推荐指数
1
解决办法
6176
查看次数

lodash“设置”方法的javascript实现

找到了用于vanilla js实现的出色代码_.get

const get = (obj, path, defaultValue) => path.split(".")
.reduce((a, c) => (a && a[c] ? a[c] : (defaultValue || null)), obj)
Run Code Online (Sandbox Code Playgroud)

现在,我正在寻求_.set实施,任何帮助将不胜感激。

javascript ecmascript-6 lodash

3
推荐指数
1
解决办法
832
查看次数

如何在 CRA (create-react-app) 和 craco 中通过 webpack 设置别名路径?

我在使用create-react-appcraco设置webpack别名路径时遇到问题,已经使用谷歌搜索但无法解决问题。

Module not found: Can't resolve '@app/App' in 'C:\ReactSandbox\my-project\src每次我使用命令运行应用程序时都会出错yarn start

重现步骤:

  1. create-react-app my-project
  2. cd my-project
  3. yarn add @craco/craco
  4. cat > craco.config.js (见下面的配置)
  5. 替换react-scriptscracopackage.json 上的“脚本”部分(craco start、craco build 等)
  6. 编辑文件src/index.js (替换第 4 行,见下面的代码)
  7. yarn start

craco.config.js

const path = require("path");

module.exports = {
  webpack: {
    resolve: { 
      alias: {
        "@app": path.resolve(__dirname, "src/"),
      }
    }    
  }
};
Run Code Online (Sandbox Code Playgroud)

源代码/索引.js

import React from 'react';
import ReactDOM from 'react-dom';
import …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs webpack

3
推荐指数
3
解决办法
1万
查看次数

useState 与 useEffect - 设置初始值

我有两个关于 React 的基本问题:

  1. 为了将初始空值分配给player功能组件中的一段状态(比方说),以下两种方法是相同的还是在某些方面有所不同?

方法一:

const [player, setPlayer] = useState({})
Run Code Online (Sandbox Code Playgroud)

方法B:

useEffect(() => {
    setPlayer({})
}, []);
Run Code Online (Sandbox Code Playgroud)
  1. 当我浏览到 a 时player,页面最终会使用来自全局存储的值进行更新,因此我需要避免在当前播放器仍在加载时显示前一个播放器的值。解决这个问题的最佳方法是什么?

如果您需要更多背景信息以提供帮助,请告诉我。
先感谢您!

reactjs react-hooks

3
推荐指数
1
解决办法
4867
查看次数

JavaScript:如何撤消数字?

下面是我的源代码,用于反转(如镜像中)给定的数字.我需要使用反向数组方法来反转数字.

var a = prompt("Enter a value");
var b, sum = 0;
var z = a;
while(a > 0)
{
  b = a % 10;
  sum = sum * 10 + b;
  a = parseInt(a / 10);
}
alert(sum);
Run Code Online (Sandbox Code Playgroud)

javascript

2
推荐指数
2
解决办法
8596
查看次数