RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-377493

MrYogurt's questions

Martin Hope
MrYogurt
Asked: 2024-09-06 16:41:26 +0000 UTC

表挤出父容器

  • 5

我想要实现的目标:

  1. 表容器必须填充 100% 的剩余可用空间
  2. 该表不应以任何方式影响父块
  3. 只有标题下的第二个映射应该滚动(标题的滚动将通过 ref 控制)

我知道我可以设置容器的固定大小并编写一个调整大小观察器,该观察器将根据窗口大小进行拉伸,但这不是理想的情况。有一种感觉,这可以更容易地完成。

为了方便理解我做了一个沙箱

我在这里复制代码:

const MOCK_DATA = [
  {
    id: 0,
    columnName: '0',
    cards: Array(50)
      .fill('1')
      .map((item, index) => ({
        id: index,
        cardType: 'someType',
        description: 'Описание',
        date: '3.09.24',
      })),
  },
];

for (let i = 1; i < 50; i += 1) {
  MOCK_DATA.push({
    id: i,
    columnName: i.toString(),
    cards: [
      {
        id: i,
        cardType: 'someType',
        description: 'Описание',
        date: '3.09.24',
      },
    ],
  });
}

export const App = () => {
  return (
    <div style={{ display: 'flex', width: '100%', height: '100%' }}>
      <div style={{ display: 'flex', width: '100%' }}>
        <div style={{ width: 200, height: '100%', background: 'lightblue' }}>
          Menu
        </div>
        <div style={{ width: '100%' }}>
          <div style={{ width: '100%', height: 200, background: 'lightgreen' }}>
            Header
          </div>
          <MyTable />
        </div>
      </div>
    </div>
  );
};

export const MyTable = () => {
  return (
    // Этот контейнер должен занимать всю оставшуюся площадь после меню и хидера
    <div style={{ maxWidth: '100%', overflow: 'auto' }}>
      <div style={{ display: 'flex', overflow: 'hidden' }}>
        {MOCK_DATA.map((column) => {
          return <div style={{ width: 165 }}>{column.columnName}</div>;
        })}
      </div>
      {/* // Этот контейнер должен скроллиться */}
      <div style={{ display: 'flex', overflow: 'auto' }}>
        {MOCK_DATA.map((column) => {
          return (
            <div style={{ minWidth: 165 }}>
              {column.cards.map((card) => {
                return <div>{card.description}</div>;
              })}
            </div>
          );
        })}
      </div>
    </div>
  );
};
javascript
  • 1 个回答
  • 40 Views
Martin Hope
MrYogurt
Asked: 2023-09-19 00:09:22 +0000 UTC

反应测试库不起作用

  • 5

我正在尝试在 next.js 的标准 ts 版本上设置反应测试库。在扩展坞上安装了软件包:

@testing-library/jest-dom"
@testing-library/react"
@testing-library/user-event

写了一个示例测试:

import '@testing-library/jest-dom'
import * as React from 'react'
import {render} from '@testing-library/react'
import { TodosContainer } from './TodosContainer'


test('Checking TodosContainer', () => {
  let component

  beforeAll(() => {
    component = render(<TodosContainer />)
  })

  test('should render', () => {
    expect(component).toBeInTheDocument()
  })

})

我什至无法运行它,因为测试命令不被接受:

Executing task: npm run test 


> todo-2023@0.1.0 test
> test

"test" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

此外,如果您进行 tsx 测试,则不会选择类型。

我的package.json:

{
  "name": "todo-2023",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint",
    "test": "test"
  },
  "dependencies": {
    "@types/node": "20.6.2",
    "@types/react": "18.2.21",
    "@types/react-dom": "18.2.7",
    "eslint": "8.49.0",
    "eslint-config-next": "13.4.19",
    "next": "13.4.19",
    "react": "18.2.0",
    "react-dom": "18.2.0",
    "typescript": "5.2.2"
  },
  "devDependencies": {
    "@testing-library/jest-dom": "^6.1.3",
    "@testing-library/react": "^14.0.0",
    "@testing-library/user-event": "^14.5.1"
  }
}

更新:

通过 jest 启动后,我遇到模块类型冲突,屏幕上出现错误:

屏幕

添加了 babel 配置:

module.exports = {
  presets: [
    ['@babel/preset-env', {targets: {node: 'current'}}],
    "@babel/preset-react",
    '@babel/preset-typescript'
  ]
};

和开玩笑的配置:

module.exports = {
  testEnvironment: "jsdom",
  transform: {
    ["^.+\\.[js|ts]x$"]: "babel-jest"
  },
}

情况没有改变,顺便说一句,错误在模块样式的导入上明确指出,我做错了什么?

javascript
  • 2 个回答
  • 31 Views
Martin Hope
MrYogurt
Asked: 2022-07-22 20:52:34 +0000 UTC

如何简化所有组合的迭代

  • 0

有一个对象:

const letters = {
    1: ['a', 'b', 'c'],
    2: ['d', 'e', 'f'],
    3: ['g', 'h', 'i'],
    4: ['j', 'k', 'l'],
    5: ['m', 'n', 'o'],
    6: ['p', 'q', 'r'],
    7: ['s', 't', 'u'],
    8: ['v', 'w', 'x'],
    9: ['y', 'z']
}

有必要编写一个函数来返回字符串传递的数字的所有可能组合。我是这样做的:

const func = (str) => {
  if (str.length === 0) return []

  const strArr = str.split('')
  const result = []
  
  const arrays = strArr.map(item => letters[item])

  if (strArr.length === 1) return arrays[0]
  
  for (let letterIndex = 0; letterIndex < arrays[0].length; letterIndex++) {
    const word = arrays[0][letterIndex]

    for (let arrayIndex = 1; arrayIndex < arrays.length; arrayIndex++) {
      
      for (let letterArrayIndex = 0; letterArrayIndex < arrays[arrayIndex].length; letterArrayIndex++) {
        const secondWord = word + arrays[arrayIndex][letterArrayIndex]
        
        if (arrays.length > 2) {
          for (let restArrays = arrayIndex + 1; restArrays < arrays.length; restArrays++) {
            for (let i = 0; i < arrays[restArrays].length; i++) {
              result.push(secondWord + arrays[restArrays][i])
            }
          }
        } else {
          result.push(secondWord)
        }
      }
    }
  }
  
  return result
}

预期结果:

func('') => []
func('2') => ['d', 'e', 'f']
func('23') => ["dg","dh","di","eg","eh","ei","fg","fh","fi"]

但显然它看起来很丑。我觉得这可以通过递归以某种方式很好地解决,但我不知道该怎么做。

javascript алгоритм
  • 2 个回答
  • 76 Views
Martin Hope
MrYogurt
Asked: 2022-08-07 19:55:09 +0000 UTC

告诉我如何在 iframe 中引用#document

  • 1

我正在做一个谷歌验证码自动通过,在完成逻辑部分后我遇到了一个愚蠢的问题,我无法访问 iframe 中嵌套文档的元素。

我正在尝试像这样访问 iframe 的内部:

const iframe = document.getElementsByTagName('iframe')[0]
console.log("iframe:", iframe.contentWindow)

我得到:

据我了解,由于安全策略,我无法更改任何内容,但特别是点击元素,我应该没有任何问题。如何解决问题?

我测试的网站

javascript
  • 1 个回答
  • 10 Views
Martin Hope
MrYogurt
Asked: 2022-07-10 22:44:30 +0000 UTC

帮助修复矩阵处理

  • 0

目标是在矩阵中找到零,并用零填充属于该元素的行和列。

我写了一个理论上应该可以工作的函数,但据我了解,在重写阶段发生了一些我无法理解的事情并且所有元素都被重置,告诉我如何修复它。

const myMatrix = [
[0, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 0, 4, 5],
[1, 2, 3, 4, 5],
[0, 2, 3, 4, 5]
];

function func (matrix) {
    const matrixTemp = matrix.slice()

  matrix.forEach ((row, rowIndex) => {

    row.forEach((rowElem, elemId) => {
    
    if(rowElem === 0) {
        matrix[rowIndex].forEach((item,index) => {
        if(matrixTemp[rowIndex][index] === 0) {
            return
        }
            matrixTemp[rowIndex][index] = 0
        })
        
        matrix.forEach((item, index) => {
            if(matrixTemp[index][elemId] === 0) {
            return
          }
            matrixTemp[index][elemId] = 0
        })
    }

    })
  })
  
  return matrixTemp
}

console.log("result:", func(myMatrix))

预期结果:

const resultMatrix = [
[0, 0, 0, 0, 0],
[0, 2, 0, 4, 5],
[0, 0, 0, 0, 0],
[0, 2, 0, 4, 5],
[0, 0, 0, 0, 0]
];
javascript
  • 2 个回答
  • 10 Views
Martin Hope
MrYogurt
Asked: 2022-04-16 16:48:30 +0000 UTC

CORS 政策错误

  • 1

尝试将表单数据发送到不同端口上的 nestjs 服务器,我尝试了前端请求:

axios({
        method: 'POST',
        url: 'http://localhost:5000/auth',
        headers: {
          "Access-Control-Allow-Origin": "*"
        },
        data: { nickname: name, password: password } })
        
      axios.post('http://localhost:5000/auth', data, {
        headers: {
          'Access-Control-Allow-Origin': '*',
          }
        }).then(function (response: any) {
          console.log(response);
        })
        .catch(function (error: any) {
          console.log(error);
        });

      await fetch("http://localhost:5000/auth", {
        method: 'POST',
        headers: {
          'Access-Control-Allow-Origin': '*',
        },
        body: JSON.stringify(data)
      })

还尝试指定服务器地址,而不是“*”。服务器接受:

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Post('auth')
  @Header('Access-Control-Allow-Origin', 'localhost:3000')
  catchData(@Param('data') data: any): any {
    console.log('data:', data);
    return this.appService.catchData(data);
  }
}

但我仍然得到错误:

错误

告诉我有什么问题。

javascript
  • 1 个回答
  • 10 Views
Martin Hope
MrYogurt
Asked: 2022-04-15 17:26:14 +0000 UTC

找不到模块'.../dist/main'

  • 0

我正在尝试通过 npm run start 启动 nestjs 服务器,但出现错误:

    Error: Cannot find module '/.../dist/main'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)
    at Function.Module._load (internal/modules/cjs/loader.js:667:27)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
    at internal/main/run_main_module.js:17:47 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! chat-app@0.0.1 start: `nest start`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the chat-app@0.0.1 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

我什至尝试从头开始重建应用程序,但仍然没有帮助找到错误。告诉我有什么问题。包.json:

{
  "name": "chat-app",
  "version": "0.0.1",
  "description": "",
  "author": "",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "db": "docker-compose -f docker-compose.yml up",
    "app": "react-scripts start",
    "start": "nest start",
    "prebuild": "rimraf dist",
    "build": "nest build",
    "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
    "start:dev": "nest start --watch",
    "start:debug": "nest start --debug --watch",
    "start:prod": "node dist/main",
    "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
    "test": "jest",
    "test:watch": "jest --watch",
    "test:cov": "jest --coverage",
    "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
    "test:e2e": "jest --config ./test/jest-e2e.json"
  },
  "dependencies": {
    "@nestjs/common": "^7.6.15",
    "@nestjs/core": "^7.6.15",
    "@nestjs/platform-express": "^7.6.15",
    "reflect-metadata": "^0.1.13",
    "rimraf": "^3.0.2",
    "rxjs": "^6.6.6",
    "@material-ui/core": "^4.11.3",
    "@material-ui/icons": "^4.11.2",
    "@nestjs/graphql": "^7.10.3",
    "@nestjs/typeorm": "^7.1.5",
    "apollo-server-express": "^2.22.2",
    "axios": "^0.21.1",
    "babel-cli": "^6.26.0",
    "babel-loader": "8.1.0",
    "babel-preset-react-app": "^3.1.2",
    "date-fns": "^2.20.3",
    "graphql": "^15.5.0",
    "graphql-tools": "^7.0.4",
    "jest": "26.6.0",
    "pg": "^8.6.0",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-router-dom": "^5.2.0",
    "react-scripts": "4.0.3",
    "typeorm": "^0.2.32",
    "web-vitals": "^1.0.1",
    "webpack": "4.44.2"
  },
  "devDependencies": {
    "@nestjs/cli": "^7.6.0",
    "@nestjs/schematics": "^7.3.0",
    "@nestjs/testing": "^7.6.15",
    "@types/express": "^4.17.11",
    "@types/jest": "^26.0.22",
    "@types/node": "^14.14.36",
    "@types/supertest": "^2.0.10",
    "@typescript-eslint/eslint-plugin": "^4.19.0",
    "@typescript-eslint/parser": "^4.19.0",
    "eslint": "^7.22.0",
    "eslint-config-prettier": "^8.1.0",
    "eslint-plugin-prettier": "^3.3.1",
    "jest": "^26.6.0",
    "prettier": "^2.2.1",
    "supertest": "^6.1.3",
    "ts-jest": "^26.5.4",
    "ts-loader": "^8.0.18",
    "ts-node": "^9.1.1",
    "tsconfig-paths": "^3.9.0",
    "typescript": "^4.2.3",
    "@babel/core": "^7.13.15",
    "@babel/preset-env": "^7.13.15",
    "@types/react-dom": "^17.0.3",
    "@types/react-router-dom": "^5.1.7",
    "babel-loader": "^8.1.0",
    "webpack": "4.44.2",
    "webpack-cli": "^4.6.0"
  },
  "jest": {
    "moduleFileExtensions": [
      "js",
      "json",
      "ts"
    ],
    "rootDir": "src",
    "testRegex": ".*\\.spec\\.ts$",
    "transform": {
      "^.+\\.(t|j)s$": "ts-jest"
    },
    "collectCoverageFrom": [
      "**/*.(t|j)s"
    ],
    "coverageDirectory": "../coverage",
    "testEnvironment": "node"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

如果有帮助,请链接到存储库

javascript
  • 1 个回答
  • 10 Views
Martin Hope
MrYogurt
Asked: 2021-11-03 01:15:39 +0000 UTC

如何替换对象内的数组?

  • 1

状态中有一个对象:

const [ops, setOps] = useState({
    names: ["МТС", "Билайн", "Мегафон"],
    links: ["/mts.img", "/beeline.img", "/megafon.img"]
});

我需要用其中的另一个替换名称中的数组。怎么做?

javascript
  • 1 个回答
  • 10 Views
Martin Hope
MrYogurt
Asked: 2021-10-23 01:47:18 +0000 UTC

UseState 挂钩状态滞后

  • 0

有2个组件:

const MassViewer:React.FC = (props) => {

    const [checkInput, setCheckInput] = useState<string>('Заполните поле');

    function AddBrand (name: string) {
        let array: string[] = opNames.slice();

            function checkAvailability(array: string[], name: string) {
                return array.some(function(arrVal) {
                    return name === arrVal;
                });
            }
            if (checkAvailability(array, name) === false) {
                setOpNames([...opNames, name]);
                setCheckInput('Добавлено');
    
            } else {
                setCheckInput('Такой оператор уже есть');
            }
    
            function Message(value: string){
                setCheckInput(value);
            }
    }

    ....

    return (
            <div>
                <AddOperator AddBrand={AddBrand} message={checkInput}/>
            </div>
);
}

export const AddOperator:React.FC <AddOperatorProps> = (props) => {

    const [message2, setMessage2] = useState<string>(props.message);

    function handleAddOp (e: React.MouseEvent<HTMLElement, MouseEvent>) {
        e.preventDefault();
        const inputResult: string = inputOp.slice();

        if (inputResult.length >= 1) {
            props.AddBrand(inputResult);
            setInputOp('');
            setMessage2(props.message);
        } else {
            setMessage2('Вы не заполнили поле');
            setInputOp('')
        }
    }

    return (
        ....
    )
}

在 AddOperator 组件中调用 handleAddOp 函数时,会将输入的内容发送到 MassViewer 组件中的 AddBrand 函数。满足条件后,写入成功状态,但问题是晚了1个render。我仍然不明白我应该使用哪个钩子 useEffect 或 useReducer 以及如何应用于我的情况。请告诉我如何实现它。

reactjs
  • 1 个回答
  • 10 Views
Martin Hope
MrYogurt
Asked: 2021-10-22 22:32:17 +0000 UTC

帮助对齐容器

  • 0

我有一棵树

.allContainers {
  display: flex;
  justify-content: center;
}

.opNames {
  display: inline-block;
}
<div className="allContainers">
            <div className="opNames">
                <div>
                    <span>...</span>
                </div>
                <div>
                    <span>...</span>
                </div>
                <div>
                    <span>...</span>
                </div>
            </div>
            <div>
                <div>
                    <span>...</span>
                </div>
            </div>
            <div>
                <div>
                    <span>...</span>
                </div>
            </div>
        </div>

我需要水平拉伸 allContainers 的全部内容,以便框始终居中并在屏幕宽度变窄时向下。此刻,容器的位置使得 opNames 块垂直伸展,其余的上升到它的右侧,容器居中,但缩小时不要向下跳:

在此处输入图像描述

css
  • 1 个回答
  • 10 Views
Martin Hope
MrYogurt
Asked: 2021-10-21 18:38:08 +0000 UTC

帮助并排放置积木

  • 0

在容器内我有一个复选框,其中的box-name值循环显示,2个容器应该并排显示列表,但我不能并排放置它们。我有:

.outerCheckbox {
  background: cadetblue;
  text-align: center;
}

.innerBox {
  width: 49%;
  background: coral;
}

.innerNamebox {
  float: left;
  width: 49%;
  background: darkgreen;
}

在此处输入图像描述

<div className="outerCheckbox">
                <form>
                    <br/>
                    {opNames.map((item) => (
                        <div key={item.id} className="innerBox">
                            <input
                                onChange={() => changeHandler(item.id)}
                                type="checkbox"
                                id={item.id}
                                checked={item.checked}
                            /></div>))}
                    {opNames.map((item) => (
                        <div key={item.id} className="innerNamebox"><label htmlFor={item.id}>{item.name}</label></div>))}
                    <br />
                </form>
            </div>

第二个循环输出:

第二版循环输出

收到回复:

在此处输入图像描述

响应后的树:

<div className="outerCheckbox">
                <form className="a">
                <div className='v'>
                    <br/>
                    {opNames.map((item) => (
                        <div key={item.id} className="innerBox">
                            <input
                                onChange={() => changeHandler(item.id)}
                                type="checkbox"
                                id={item.id}
                                checked={item.checked}
                            /></div>))}
                            <div className='asdass'>
                    {opNames.map((item) => (
                        <div key={item.id} className="innerNamebox"><label htmlFor={item.id}>{item.name}</label></div>))}
                        </div>
                    <br />
                    </div>
                </form>

            </div>

css
  • 1 个回答
  • 10 Views
Martin Hope
MrYogurt
Asked: 2021-10-21 00:33:24 +0000 UTC

为什么安装引导程序后容器不拉伸?

  • 0

我安装了引导程序,但我不明白为什么容器不能伸展。安装nextjs时遇到同样的问题,通过删除参数解决:

* {
  box-sizing: border-box;
}

并且在安装引导程序后,问题返回并且没有通过在模块中清除此参数来解决:

在此处输入图像描述

还有什么可能的原因?

它应该是:

在此处输入图像描述

它是如何变成的:

在此处输入图像描述

css
  • 1 个回答
  • 10 Views
Martin Hope
MrYogurt
Asked: 2021-10-19 20:00:13 +0000 UTC

为什么模块导入不起作用?

  • 0

我将应用程序转移到 next.js 并且由于某种原因它写道找不到模块,尽管它直接在错误路径中指向它。

我这样导入:

import InputMask from "react-input-mask";

错误是这样的: 在此处输入图像描述

在此处输入图像描述

nextjs
  • 1 个回答
  • 10 Views
Martin Hope
MrYogurt
Asked: 2021-10-16 21:14:24 +0000 UTC

为什么钩子改变状态后没有渲染?

  • 0

从类切换到功能组件,并且在状态更改后不会进行渲染。告诉我有什么问题。

它在课堂上的工作方式:

name.forEach(function(elem) {
            if (checkDelAvailability(array2, elem) === true) {
                    for (let i = 0, len = array2.length; i < len; i++) {
                        if (array2[i] === elem) {
                            array2.splice(i, 1);
                            break;
                        }
                    }
                }
        });

            this.setState({
                opNames: array2,
            });

如何在函数中不起作用:

name.forEach(function(elem) {
            if (checkDelAvailability(array2, elem) === true) {
                    for (let i = 0, len = array2.length; i < len; i++) {
                        if (array2[i] === elem) {
                            array2.splice(i, 1);
                            break;
                        }
                    }
                }
            setOpNames(array2);
        });

整个组件:

function MassViewer (props) {

    const [checkInput, setCheckInput] = useState('');
    const [opNames, setOpNames] = useState(["name1", "name2", "name3"]);

    function AddBrand (name) {
        let array = opNames;
        function checkAvailability(array, name) {
            return array.some(function(arrVal) {
                return name === arrVal;
            });
        }
        if (checkAvailability(array, name) === false) {
            setOpNames([...opNames, name]);
        } else {
            setCheckInput('Такое название уже есть');
        }

    }

    function ElementList({opNames}) {
        console.log(opNames);
        return opNames.map((name) => (
            console.log(name),
            <Operator key={name} brand={name}/>
        ));
    }

    function DeleteBrand (name) {
        let array2 = opNames;
        function checkDelAvailability(array2, elem) {
            return array2.some(function(arrVal) {
                return elem === arrVal;
            });
        }

        name.forEach(function(elem) {
            if (checkDelAvailability(array2, elem) === true) {
                    for (let i = 0, len = array2.length; i < len; i++) {
                        if (array2[i] === elem) {
                            array2.splice(i, 1);
                            break;
                        }
                    }
                }
            setOpNames(array2);
        });
    }

        return (
            <div>
            <div>
                <ElementList opNames={opNames} />
            </div>
                <div>
                    <AddOperator AddBrand={AddBrand} message={checkInput}/>
                </div>
                <div><DelOperator DeleteBrand={DeleteBrand} brand={opNames} /></div>
            </div>
        );
}

开发者:

export function DelOperator (props) {

const [showModal, setShowModal] = useState(false);
const [name, setName] = useState([]);
const prevNameRef = useRef([]);
useEffect(() => {
    prevNameRef.current = name;
});

function handleOpenModal () {
    setShowModal(true);
}

function handleCloseModal () {
    setShowModal(false);
}

function handleDeleteOp (e) {
    e.preventDefault();
    props.DeleteBrand(name);
}

function checkAvailability (array, name) {
    return array.some(function(arrVal) {
        return name === arrVal;
    });
}

function checkListener (check, delOp) {
    let names = name.slice();
    const prevName = prevNameRef.current;
    console.log('До цикла: ', check, names, delOp);
    if (check === true) {
        if (checkAvailability(names, delOp) === true) {
            console.log('В цикле: ', check, names, delOp);
            for (let i = 0, len = names.length; i < len; i++) {
                if (names[i] === delOp) {
                    names.splice(i, 1);
                    break;
                }
            }
            setName(names);
       }

        console.log('После цикла: ', check, names, delOp);

    } else if (check === false) {
        if (checkAvailability(names, delOp) === false) {
            setName([...prevName, delOp]);
        console.log('Вторая проверка: ', check, names, delOp);

        }
    } else {
            console.log('каво')
        }
    }

function CheckboxList ({brand}) {
    return brand.map((name) => (
        <CheckboxDeleteOp key={name} brand={name} checkListener={checkListener}/>
    ));
}

    return (
        <div>
            <a href="#"><span className="delOp" onClick={handleOpenModal}></span></a>
            <Modal
                closeTimeoutMS={500}
                isOpen={showModal}
                contentLabel="onRequestClose Example"
                onRequestClose={handleCloseModal}
                className="Modal"
                overlayClassName="Overlay"
            >
                <form>
                    <label className="delOpLabel">
                        <CheckboxList brand={props.brand}/>
                    </label><br />
                </form><br />
                <button onClick={handleDeleteOp}>Удалить</button><br/><br/>
                <button onClick={handleCloseModal}>Закрыть</button>
            </Modal>
        </div>
    )
}

复选框删除操作:

export function CheckboxDeleteOp (props) {

    const [checked, setChecked] = useState(false);
    const prevCheckedRef = useRef();

    useEffect(() => {
        prevCheckedRef.current = !checked;
    });
    
    function handleCheck () {
        const prevChecked = prevCheckedRef.current;
        setChecked(prevChecked);
        props.checkListener(prevChecked, props.brand);
    }

    return (
        <div>
            <br/>
            <div>
                <input className="checkboxDeleteOp"
                       type="checkbox"
                       checked={checked}
                       onChange={handleCheck}/>
                <div>{props.brand}</div>
            </div>
        </div>
    )
}

reactjs
  • 1 个回答
  • 10 Views
Martin Hope
MrYogurt
Asked: 2021-10-15 19:25:29 +0000 UTC

在功能组件之间传递函数

  • 0

我将类组件重新制作成功能组件,当将一个函数传递给另一个组件时,它变得不可用,尽管 webstorm 将其突出显示为可见。我究竟做错了什么?

function MassViewer (props) {


    function AddBrand (name) {
    
    ....

        return (
            
                <div>
                    <AddOperator AddBrand={AddBrand} />
                </div>
        );
}

export function AddOperator (props) {

   ....

    function handleAddOp (e) {
        e.preventDefault();
        const inputResult = inputOp;

        if (inputResult.length >= 1) {
            setMessage2('Добавлено');
            AddBrand(inputResult);
            setInputOp('');
        } else {
            setMessage('Вы не заполнили поле');
            setInputOp('')
        }
    }

        return (
            ....
        )
}

reactjs
  • 1 个回答
  • 10 Views
Martin Hope
MrYogurt
Asked: 2020-10-08 18:28:05 +0000 UTC

如何在不重新组装该数组的情况下删除处于某个状态的数组的特定元素?

  • 0

有一种状态:

this.state = {
    names: ["name1", "name2", "name3"],
};

我需要一个函数,它会按名称删除一些值,而不是 id,像这样,但目前它只是无休止地运行,一切都崩溃了:

this.setState((prevState) => ({ names: [...prevState.names, delete[name]] }));
javascript
  • 1 个回答
  • 10 Views
Martin Hope
MrYogurt
Asked: 2020-10-02 19:00:56 +0000 UTC

在组件之间传递状态

  • 0

使用 handleAddElement 按钮,我将输入的结果添加到 names 数组,但是 Show 组件在没有状态的情况下看不到这个结果,据我所知,我尝试跟踪其中数组的状态,但是没有有用,告诉我问题是什么。

let names = [
    'name1',
    'name2',
    'name3',
];


function ElementList(props) {
    let names = props.names;
    return (
        names.map((name) =>
            <Element key={name} brand={name}/>
        ));
}

class Element extends React.Component {

    constructor (props) {
        super(props);
        this.state = {
            input: ''
        };
    }

.....

    handleAddElement = (e) => {
        e.preventDefault();
        const {input} = this.state;
        this.setState({
            input: ''
        });
        names.push(input);
    }

    render () {
        const {input} = this.state;
        return (
            .....
                    <button onClick={this.handleAddElement}>Добавить</button>
            .....
        )
    }
}

class Show extends React.Component {

    constructor (props) {
        super(props);
        this.state = {
            names: names
        };
    }

    render() {
        return (
            <div>
                <ElementList names={names}/>
            </div>
        );
    }
}

reactjs
  • 1 个回答
  • 10 Views
Martin Hope
MrYogurt
Asked: 2020-10-01 19:12:53 +0000 UTC

键错误

  • 1

有这个代码:

function ElementList(props) {
    let names = props.names;
    let listItems = names.map((name) =>
        <Element key={name.name} />
    );
    return (
        {listItems}
    );
}

let names = [
    {id: 0, name: 'name1'},
    {id: 1, name: 'name2'},
    {id: 2, name: 'name3'},
];

class Show extends React.Component {

    render() {
        return (
            <div>
                <ElementList names={names}/>
            </div>
        );
    }
}

我收到一个错误:对象作为 React 子项无效(找到:带有键 {listItems} 的对象)。如果您打算渲染一组子项,请改用数组。老实说,我不明白它想从我这里得到什么。

reactjs
  • 2 个回答
  • 10 Views
Martin Hope
MrYogurt
Asked: 2020-09-25 22:41:26 +0000 UTC

如何将附加参数传递给 handleClick()

  • 1

在按钮上,我需要通过向它传递一些值来激活该功能,但点击处理肯定要接受“合成事件-e”。如果我传递除此事件之外的其他内容,则该事件将消失。我想要像下面这样的东西。

function handleClick(e, value) {
e.preventDefault();}

<button onClick={handleClick(e, value)}>button</button>
javascript
  • 1 个回答
  • 10 Views
Martin Hope
MrYogurt
Asked: 2020-09-22 00:03:29 +0000 UTC

React 中的数字范围限制

  • 0

有一个函数可以处理输入并将其限制在1到1000的范围内。但是只输入数字的限制不起作用,帮我弄清楚。

 onChangeSearch(e) {
    let regexp = [0-9];
    let value = e.target.value;
    value = value.replace(regexp, '').substr(0, 4);
    this.setState({
        filter_search: value
    });

    if (value <= 0) {
        this.setState({
            filter_search: value = 1
        });
    } else if (value >= 1000) {
        this.setState({
            filter_search: value = 1000
        });
    }
javascript
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5