little-o 相关问题


使用 WhenAnyValue 和 null 传播时如何避免过时的值?

所以我使用这个语法(类似于推荐的): WhenAnyValue(o => o.Foo, o => o.Foo!.Bar, (foo, bar) => (foo, bar)) 订阅我的视图模型的 Foo 和 Bar 的更改: 公开


SSLHandshakeException:SSL 握手中止:ssl=0xbe6af938:系统调用期间出现 I/O 错误,连接被对等方重置

出现以下错误:javax.net.ssl.SSLHandshakeException:SSL握手中止:ssl = 0xbe6af938:系统调用期间发生I/O错误,连接被对等方重置 改装类: 公开课


将多维数组中的行分组并对每组中的“count”个元素求和[重复]

我有一个关联数组数组,我想按 A、B 和 C 的值按行对它们进行分组,并对每组的计数值求和。 $数组 = [ ['A' => 'O', 'B' => 'O...


多重定义和静态关键字

2.o 中的函数 f 具有全局作用域,而 1.c 如果他愿意,他可以使用它。 但在 1.o 中 f 有唯一的定义。 链接器同意接受它 这里怎么没有冲突呢


使用 Mypy 插件对动态属性创建进行类型检查

我有一个代码库,它使用一种非常奇怪的模式来定义命令行选项。它看起来像这样: # 选项.py 定义组(): o = 选项组() 返回 o, o.define 选项 =


为什么我可以使用模板函数作为 std::sort 的参数,但不能使用模板 lambda(使用成员函数 ptr 作为模板参数)[重复]

抱歉标题很长,正如我所说的,这是有效的: 结构体 S { int a{}, b{}; }; std::ostream & 运算符<<(std::ostream &o, const S &s) { return o << '{' << s.a << '...


连接具有不同大小数组的两列

我有一个表,查询结果: SELECT o.id AS order_id, arrayMap(i -> i, range(1, o.quantity)) AS virtual_sku, s.sku AS sku FROM 订单 o 左连接(选择 order_id, ...


使用 Jenkins 时 AWS CLI 无法加载凭证

我有 EC2,我已使用 xxxjenkins 用户安装了 AWS CLI。以下是我安装 awscli 所遵循的步骤: 卷曲“https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip”-o“awscliv2.z...


EF Core,强制外键对唯一的方法

我有一个由 EF 实体 UserContact 表示的多对多 UsersContacts 关系表。该关系是用户表中对称的多对多用户链接对。 我的目标:o...


从 tar 中删除文件 - 奇怪的行为

我想在加载之前更新 tar 中的图像标签(这是要求)。 例如我拉高山:最新: docker pull alpine:最新 docker save alpine:latest -o alpine.tar tar -tf alpine.tar 显示...


如何在 RTL 测试中使用 React Redux useDispatch 钩子?

我想在使用 redux 调度后测试 React 组件。我正在使用“test-utils.ts”文件中的自定义渲染函数: 从 'react' 导入 { ReactElement } 导入{渲染,渲染O...


Jira Rest Api 删除版本无法按预期工作

我正在使用 Jira(版本 5)Rest API 来删除版本,就像文档告诉我的那样,我通过 moveFixIssuesTo 和 moveAffectedIssuesTo 将问题从已删除的版本转移到 o...


apache nifi中如何动态连接多个数据库

我想根据某些条件连接多个数据源,我不想创建多个DBCPConnectionPool服务来连接每个数据库,我只想检查我的属性值是否为o...


如何找到现有项目中使用的.NET版本?

我预计将继续开发一个已多次转手的 C#/ASP.NET 项目,并且没有人确定正在使用哪个版本的 .NET。 有什么东西(也许是o...


如何通过安装 cifs 共享的脚本设置密码变量

我有以下 bash 脚本来在 NAS 驱动器中挂载几个共享目录: sudo mount -t cifs //server/dir1 /mnt/nas/dir1 -o 用户名=raf sudo mount -t cifs //server/dir2 /mnt/nas/di...


如何在haskell中像c++一样快地编写sum函数?

haskell 中的以下 2 个版本 mysum 函数比 c++ 版本(使用 ghc -O)慢 10 倍。如何进一步优化 mysum 函数? 模块主要在哪里 主要::IO() 主要 = 打印 $ mysum ...


Appwrite:注册账号失败

发生了什么事,我想注册一个帐户,但出现了如图所示的错误。发生了什么事,我想尝试注册一个新帐户,但出现了 403 错误。 我得到的回应: 无效O...


增加 ptr 以迭代数组时,nullptr 检查出现分段错误

以下代码在编译和运行时会出现分段错误。我正在 MacBook 上尝试《C++ 之旅》第 12 页上的示例。 编译命令- clang++ -Wall -std=c++11 -o 替换...


删除 CSV 文件中包含所有连字符的行

我无法在具有许多其他格式的 CSV 文件中将连字符 (-) 替换为分号 (;)。 当我尝试时,我总是遇到错误:ValueError:关闭文件上的 i/o 操作。或属性...


为什么Dijkstra算法中的decreasekey需要O(logN)时间?

对于更新部分, 对于 u 的所有邻居 w: 如果 dist[w] > dist[u] + l(u,w) 距离[w] = 距离[u] + l(u,w) 上一个[w] = u 减少键(H,w) 这里,w是节点的ID...


如何仅替换字符串中的特定匹配项?

假设我有以下字符串: 你想喝点茶吗? 我只想将第二次和第三次出现的 o 替换为 0,所以它变成: 你想喝点茶吗? 或者也许我愿意


元素在数组中重复的最大次数

我需要一个算法,它返回给定整数数组中元素重复自身的最大次数。我需要线性时间复杂度,在最坏的情况下为 O(n),而不使用 HashMap。是


Excel 中索引和匹配的组合仅重复检查第一行

我有一个 Excel 工作表,其中有一些数据。我想根据以下公式中的条件从第三列中选择一个特定值 =INDEX($B:$O,MATCH(1,($B:$B=$Q2)($E:$E=&quo...


树中的独家总和

我有一个内树,其中每个节点都有一个或两个父节点,并与一个值关联。 在 O(N) 时间内,我可以找到每个节点的累积和(树中其上方所有值的总和),其中...


检查多边形是否对称

给定笛卡尔坐标中的多边形(不一定是凸的),我想知道是否有任何方法可以检查该多边形的对称性? 我可以想到一个 O(N) 解决方案:使用旋转 cali...


Python中math.factorial()函数的时间复杂度是多少?

有没有什么方法可以将阶乘函数的时间复杂度降低到O(n)以下,以及它在python的数学库中实现的时间复杂度是多少? 另外,有记忆吗...


1 次尝试后无法连接到 Snowflake 后端。l

1 次尝试后无法连接到 Snowflake 后端。正在中止 如果错误消息不清楚,请使用 -o log_level=DEBUG 启用日志记录并查看日志以找出原因。联系支持人员


如何用csv模块替换CSV文件中的连字符减号

我无法在具有许多其他格式的 CSV 文件中将连字符 (-) 替换为分号 (;)。 当我尝试时,我总是遇到错误:ValueError:关闭文件上的 i/o 操作。或属性...


如何使用 pytest-watch 查看打印语句?

在调试我的Python代码时,我试图在运行测试时查看打印语句。 如果我运行 pytest -s 或 pytest --capture=no 我可以按预期看到我的打印结果,但是当我尝试通过 o...


如何在 Vivado BD 中从 Xilinx 在 KC-705 上添加 SD 驱动程序

当我尝试在vivado块设计中为sd卡添加IP核时,它在生成比特流时写入错误。 错误是“未指定的 I/O 标准”和“不受约束的逻辑端口”...


如何修复分配文件时的 I/O 错误 102

我的老师分配我创建一个简单的项目:创建一个表单,用户必须填写该表单,当他按下提交按钮时,程序应该以不同的方式写入所有信息


非常基本的两个数字之和 I/O 问题

在 C++ 中添加两个数字时遇到麻烦并得到一些奇怪的答案。甚至每次编译代码时添加相同的两个数字时都会得到不同的答案。 #包括 国际马...


找到最大和矩形的速度有多快?

我需要在一个大整数矩阵中找到一个具有最大总和的矩形。例如,有一个 O(n^3) 时间算法,如此处和此处所述。 这些都工作得很好,但速度很慢,


非常基本的两个数字之和 I/O 问题[重复]

在 C++ 中添加两个数字时遇到麻烦并得到一些奇怪的答案。甚至每次编译代码时添加相同的两个数字时都会得到不同的答案。 #包括 国际马...


如何正确使用 Function.InvokeAfter 来延迟 Excel 中整个查询的 Power Query 处理

我试图将 Excel 中的 Power Query 运行延迟大约 25 秒(我们称之为查询 2)。这是为了允许另一个查询(查询 1)首先从外部源提取数据。查询 2 o...


汇编和模板类

我正在开发一个小项目,并尝试将一些硬编码值用于内联汇编。为此,我使用模板。我创建了一个代码片段来显示我所看到的 #包括 我正在开发一个小项目,并尝试将一些硬编码值用于内联汇编。为此,我使用模板。我创建了一个代码片段来显示我所看到的 #include <iostream> template <size_t T> struct MyClass { size_t myValue = T; void doSomething() { size_t value = T; __asm { mov eax, [T] mov [value], eax } std::cout << value << std::endl; } }; int main() { auto o = new MyClass<999>(); o->doSomething(); return 0; } 事实证明,对于汇编代码,它试图使用数据段而不是“直接将数字粘贴到那里” ; 25 : { push ebp mov ebp, esp push ecx ; 26 : auto o = new MyClass<999>(); push 4 call ??2@YAPAXI@Z ; operator new add esp, 4 ; 14 : size_t value = T; mov DWORD PTR _value$2[ebp], 999 ; 000003e7H ; 26 : auto o = new MyClass<999>(); mov DWORD PTR [eax], 0 mov DWORD PTR [eax], 999 ; 000003e7H ; 15 : __asm ; 16 : { ; 17 : mov eax, [T] mov eax, DWORD PTR ds:0 ; 18 : mov [value], eax mov DWORD PTR _value$2[ebp], eax ; 19 : } ; 20 : std::cout << value << std::endl; 我正在使用 Visual Studio 2015。还有其他方法可以实现此目的吗? 啊,多么可爱又扭曲的问题啊! 我尝试使用 T 初始化 constexpr 变量。结果是相同的 - 从内存加载值。宏可用于将文字传递给内联汇编,但它们与模板不能很好地混合。 使用 T 在类中初始化枚举在理论上应该可行(https://msdn.microsoft.com/en-us/library/ydwz5zc6.aspx提到枚举可以在内联汇编中使用),但是在内联汇编使 Visual Studio 2015 编译器崩溃:-)。 似乎有效的是一个函数模板,它使用模板参数声明一个枚举,然后在内联程序集中使用该枚举。如果必须将其放在模板类中,则可以在类中实例化模板函数,如下所示: #include <iostream> template <size_t T> void dosomething() { enum { LOCALENUM = T }; size_t value = 0; __asm { mov eax, LOCALENUM mov[value], eax } std::cout << value << std::endl; } template <size_t T> struct MyClass { size_t myValue = T; void doSomething() { ::dosomething<T>(); } }; int main() { //dosomething<999>(); auto o = new MyClass<999>(); o->doSomething(); return 0; } 这会产生以下汇编代码: auto o = new MyClass<999>(); 001B1015 mov dword ptr [eax],0 001B101B mov dword ptr [eax],3E7h o->doSomething(); 001B1021 mov eax,3E7h <--- Victory! 001B1026 mov dword ptr [ebp-4],eax 001B1029 mov ecx,dword ptr [_imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A (01B2048h)] 001B102F push offset std::endl<char,std::char_traits<char> > (01B1050h) 001B1034 push dword ptr [ebp-4] 001B1037 call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (01B2044h)]


找到长度为 3 的总组合,使得总和可被给定数字和 i 整除<j<k

所以,我一直在尝试寻找问题的最佳解决方案,但我找不到小于o(n3)的解决方案。 问题陈述是:- 找到数组中三元组的总数,例如...


如何在 Visual Studio 中列出当前文件中的所有符号并从列表中搜索一个?

与 Visual Studio Code 中键盘快捷键 Ctrl+Shift+O 的功能完全相同。 VS 中最接近的功能是快捷键 Alt+\ do,但它不会列出当前文件中的所有符号(th...


将USDTC发送到测试网中的新Tron地址——“未记录的代币”

我在测试网 Shasta 中有一个新生成的 TRON 地址。我正在尝试从水龙头 - usdcfaucet.com 向其发送 USDC。在以太坊测试网上,如果我将其发送到那里,它会被很好地接收,o...


在 macOS 上从源代码构建并安装 git:“ld:多个错误:存档成员 '/' 不是 mach-o 文件”

我正在尝试通过使用 bash 作为 git 别名中的默认 shell 从源代码(https://github.com/git/git.git)构建 git,因此我不必识别 echo -e 或 echo用于输出。 然而,我遇到了...


(mach-o 文件,但是是一个不兼容的架构(有'x86_64',需要'arm64')

我在 m1 上购买了 MacBook Air,并下载了 PyCharm 用于工作。当我尝试在 aiogram 上运行我的项目时,它不起作用。它给出了这个回溯: 回溯(最近一次调用最后一次): 文件“/库/


文件“CreateFile(打开)”操作期间出现 I/O 错误(SQLCODE:-902,SQLSTATE:08001,GDSCODE:335544344)Firebird 4.0.3(SS)

旧服务器(FB 1.5)上存在技术问题,我们将数据库复制到帖子标题中提到的另一个虚拟服务器。 我上周设置了服务器: 还有允许在 3050 p 上访问的规则...


顺风未加载颜色

有简单的html: 公共/index.html: 有简单的html: public/index.html: <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="styles.css"> </head> <body class="text-red-600"> some text </body> css 是从 tailwindcss -i src/styles.css -o public/styles.css 获取的 src/styles.css: @tailwind base; @tailwind components; @tailwind utilities; tailwind.config.js: module.exports = { content: ["./src/**/*.{html,js}"], theme: { extend: {}, }, plugins: [], } <body>标签中的红色不适用。默认的顺风类别是否导入到public/styles.css? Tailwind 配置中的 public/index.html 文件似乎没有覆盖 content 文件。您必须确保使用 Tailwind 类的源代码文件被 content 文件 glob 覆盖,否则 Tailwind 将不会扫描这些文件,也不会为存在的类名生成 CSS 规则。考虑阅读有关配置的文档content。 module.exports = { content: [ "./src/**/*.{html,js}", "./public/index.html", ], theme: { extend: {}, }, plugins: [], }


访问 ExpandoObject 中的动态视图

我有以下方法来创建这个 ExpandoObject: List 示例 = new List(); foreach(费率中的变量率) { varrateObject = new ExpandoObject() as IDictionar... 我有以下方法来创建这个ExpandoObject: List<object> example = new List<object>(); foreach (var rate in rates) { var rateObject = new ExpandoObject() as IDictionary<string, object>; rateObject["Id"] = rate.Id; rateObject["RateType"] = rate.RateType; rateObject["Units"] = rate.R6Item.Unit.Symbol; rateObject["Schedule"] = rate.R6Item.Schedule.Description; rateObject["R6Code"] = rate.R6Item.Code; rateObject["R6Description"] = rate.R6Item.Description; rateObject["R7Code"] = rate.R7Item.Code; rateObject["R7Description"] = rate.R7Item.Description; rateObject["DICODE"] = rate.R6Item.Schedule.Discipline.Code; foreach (var currency in rate.Project.ProjectCurrencies) { rateObject[currency.Currency.Name] = currency.Currency.Name; } example.Add(rateObject); } 现在,当我展开示例对象时,它看起来像这样: 如果我进一步扩展,就像这样: 现在我想要的数据是如何在动态视图中显示的,有没有办法能够访问它?并有与 ExpandoObject 的动态视图相同的示例? 您肯定可以做很多事情来增强您的调试体验。这是我的快速尝试: 我必须使用组合来扩展密封类ExpandoObject,其属性为: class MyExpando { [DebuggerBrowsable(DebuggerBrowsableState.Never)] public ExpandoObject Value { get; } = new(); [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)] public List<KeyValuePair<string, object?>> Properties => Value.ToList(); public void Add(string key, object value) => ((IDictionary<string, object?>)Value)[key] = value; public override string ToString() => string.Join(", ", Value.Select(o => $"{o.Key}={o.Value}")); } 有: 覆盖显示集合时使用的ToString()方法, 隐藏在调试器属性 Value 中以访问 ExpandoObject, 属性 Properties 用于在调试器 KeyValuePair 条目中可视化。


访问 Expando 对象内的动态视图

我有以下方法来创建这个expandoObject: List 示例 = new List(); foreach(费率中的变量率) { var 速率对象 = 新 我有以下方法来创建这个expandoObject: List<object> example = new List<object>(); foreach (var rate in rates) { var rateObject = new ExpandoObject() as IDictionary<string, object>; rateObject["Id"] = rate.Id; rateObject["RateType"] = rate.RateType; rateObject["Units"] = rate.R6Item.Unit.Symbol; rateObject["Schedule"] = rate.R6Item.Schedule.Description; rateObject["R6Code"] = rate.R6Item.Code; rateObject["R6Description"] = rate.R6Item.Description; rateObject["R7Code"] = rate.R7Item.Code; rateObject["R7Description"] = rate.R7Item.Description; rateObject["DICODE"] = rate.R6Item.Schedule.Discipline.Code; foreach (var currency in rate.Project.ProjectCurrencies) { rateObject[currency.Currency.Name] = currency.Currency.Name; } example.Add(rateObject); } 现在,当我展开示例对象时,它看起来像这样: 如果我进一步扩展,就像这样: 现在我想要的数据是如何在动态视图中显示的,有没有办法能够访问它?并有与 ExpandoObject 的动态视图相同的示例吗? 您肯定可以做很多事情来增强您的调试体验。这是我的快速尝试: 我必须使用组合来扩展密封类ExpandoObject,其属性为: class MyExpando { [DebuggerBrowsable(DebuggerBrowsableState.Never)] public ExpandoObject Value { get; } = new(); [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)] public List<KeyValuePair<string, object?>> Properties => Value.ToList(); public void Add(string key, object value) => ((IDictionary<string, object?>)Value)[key] = value; public override string ToString() => string.Join(", ", Value.Select(o => $"{o.Key}={o.Value}")); } 有: 覆盖显示集合时使用的ToString()方法, 隐藏在调试器属性 Value 中以访问 ExpandoObject, 属性 Properties 用于在调试器 KeyValuePair 条目中可视化和编辑。


读取带有Java流中其他属性的嵌套列表

我有一个对象列表,例如 Person 依次有几个列表,其中很少有通用属性,如下所示 列表 地址1 = List.of("1","2","5","6& 我有一个对象列表,例如 Person 依次有几个列表,其中很少有通用属性,如下所示 List<Address> address1 = List.of("1","2","5","6") List<Address> address2 = List.of("3","4") List<Email> email1 = List.of("[email protected]","[email protected]", "[email protected]") List<Email> email2 = List.of("[email protected]", "[email protected]") Person person1 = new Person("smith",22, address1, email1) Person person2 = new Person("Alex",30, address2, email2) List<Person> person = List.of(person1, person2) 我想迭代人员列表并获取地址和电子邮件对象的其他两个嵌套列表大小的大小。在上面的例子中,地址大小=6,电子邮件=5,我想返回 是否有可能在单次迭代中在Java流中实现这一点? 是否可以在单次迭代中在 Java 流中实现此目的? 如果您指的是一个循环或类似的构造,是的。如果你的意思是一些 O(1) 解决方案,不!无论是命令式还是声明式完成,都会在某个地方出现迭代。最简单的方法如下: int emailCount = 0; int addressCount = 0; for (Person person : persons) { emailCount += person.email.size(); addressCount += person.address.size(); } System.out.println(emailCount); System.out.println(addressCount); 打印 5 6 这也可以通过流来完成,但开销更大。


在发布为 npm 包之前使用 npm 链接测试组件时出现重复的 ReactJS 导入问题

我有一个像这样的简单组件。 从'react'导入React,{useState}; 函数 MyComponentWithState(props) { const [值,setValue] = useState(0); 返回 ( 我的价值... 我有一个像这样的简单组件。 import React, {useState} from 'react'; function MyComponentWithState(props) { const [value, setValue] = useState(0); return ( <p>My value is: {value}</p> ) } export default MyComponentWithState; 我想将它作为单独的包发布在 NPM 上。因此,为此我准备了 package.json 和 webpack.config.js,如下所示。 package.json: { "name": "try-to-publish", "version": "0.0.1", "description": "Just a test", "main": "build/index.js", "scripts": { "start": "webpack --watch", "build": "webpack" }, "author": { "name": "Behnam Azimi" }, "license": "ISC", "peerDependencies": { "react": "16.9.0", "react-dom": "16.9.0" }, "dependencies": { "react": "16.9.0", "react-dom": "16.9.0", "prop-types": "15.7.2", "react-scripts": "3.1.1", "webpack": "4.39.3" }, "devDependencies": { "@babel/core": "7.6.0", "@babel/plugin-proposal-class-properties": "7.5.5", "@babel/preset-env": "7.6.0", "@babel/preset-react": "7.0.0", "babel-loader": "8.0.6", "babel-plugin-transform-object-rest-spread": "6.26.0", "babel-plugin-transform-react-jsx": "6.24.1", "css-loader": "3.2.0", "node-sass": "4.12.0", "sass-loader": "8.0.0", "style-loader": "1.0.0", "webpack-cli": "3.3.8", "webpack-external-react": "^1.1.2" } } webpack.config.json: const path = require('path'); module.exports = { entry: './src/index.js', output: { path: path.resolve(__dirname, 'build'), filename: 'index.js', libraryTarget: 'commonjs2' }, module: { rules: [ { test: /\.(js|jsx)$/, exclude: /node_modules/, include: path.resolve(__dirname, 'src'), use: { loader: "babel-loader" } }, ] }, resolve: { alias: { 'react': path.resolve(__dirname, 'node_modules/react'), 'react-dom': path.resolve(__dirname, 'node_modules/react-dom'), } }, externals: { 'react': "commonjs react", 'react-dom': "commonjs react-dom" }, }; 这是我的 .babelrc: { "presets": [ "@babel/preset-env", "@babel/preset-react" ], "plugins": ["@babel/plugin-proposal-class-properties"] } 当我将组件发布到 NPM 并使用 `npm install 将其安装到我的另一个 ReactJs 项目中时,这些配置就像魅力一样,但我的观点是本地测试! 我想在发布之前测试这个组件/库。为此,我使用 npm link 功能将我的组件与我的主 ReactJS 项目链接起来。 正如您在上面看到的,我的组件是功能性的,我也使用了钩子。因此,当我将本地链接的库注入到我的主 ReactJs 项目中时,会遇到此错误, 无效的挂钩调用。钩子只能在函数组件的主体内部调用。发生这种情况可能是由于以下原因之一: 1.您的React和渲染器版本可能不匹配(例如React DOM) 2. 你可能违反了 Hooks 规则 3. 您可能在同一个应用程序中拥有多个 React 副本 我的问题与第三个原因有关。我的项目使用 ReactJs 并导入一次,我的组件也会导入 React!我的意思是在一个项目中两次 React 导入!. 我的 Webpack 配置中还有关于 react 和 react-dom 的 externals 配置。 我应该怎么做才能解决这个问题?我的错误在哪里? 更新: 我也尝试过 @sung-m-kim 和 @eddie-cooro 所说的,但没有成功!意思是,我更改了 package.json 并从 react 中删除了 react-dom 和 dependencies 并将它们添加到 devDpendencies。 我终于通过这些步骤解决了这个问题。 运行npm链接里面 <your-library-package>/node_modules/react 还有 运行npm链接里面 <your-library-package>/node_modules/react-dom 然后在 应用程序根目录中运行 npm link react 和 npm link react-dom 并且不要忘记将 React 和 React-dom 作为库中的外部对象保留 // webpack.config.js const externals = { "react": "react", "react-dom": "react-dom", } module.exports = { . . . externals } 我解决了我的问题。我使用 RollupJS 而不是 Webpack 作为捆绑工具进行捆绑。 这是我的rollup.config.js: import {uglify} from 'rollup-plugin-uglify' import babel from 'rollup-plugin-babel' export default { input: "./src/index.js", external: ['react', 'react-dom'], output: { name: 'test-lib', format: "cjs", }, plugins: [ babel({ exclude: "node_modules/**" }), uglify(), ], }; 和我的package.json: { "name": "test-lib", "version": "1.0.0", "main": "dist/test-lib.min.js", "scripts": { "build": "rollup -c -o dist/test-lib.min.js" }, "author": "Behnam Azimi", "license": "ISC", "peerDependencies": { "react": "^16.9.0", "react-dom": "^16.9.0" }, "devDependencies": { "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", "@babel/preset-react": "^7.0.0", "rollup": "^1.21.4", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-commonjs": "^10.1.0", "rollup-plugin-uglify": "^6.0.3" } } 经过这些更改,npm link在我的ReactJS(Hooks)项目中真正发挥了作用。 请注意,这只是一个简单的 Rollup 配置来展示我的解决方案,您可以在配置中添加多种内容,例如热重载、样式加载器和许多其他插件。 仅在 package.json 的 react 部分(而不是 react-native)内设置 peerDependencies 和 dependencies 包。另外,对于本地开发(当您的包未包含在任何其他 React 项目中并且您想在本地运行它时),您可以使用 devDependencies 字段。 我在打字稿反应项目中解决了这个问题。 可能,当使用 npm link 时,请使用主应用程序项目和组件项目中的 react。 因此,在您的 package.json 中从 react 和/或 dependencies 中删除 devDependencies 检查答案:https://stackoverflow.com/a/62807950/5183591 我也有同样的问题。 就我而言,我开发了一些 UI 组件作为包,其中有一个包含 React 应用程序的示例文件夹,用于创建 React 应用程序。 问题是,当我使用 npm i ../ 将包安装到示例应用程序中时,它会将包中的所有文件安装到示例应用程序中,包括 node_modules 文件夹。由于我已经安装了 react 和 react-dom 作为对等依赖项,示例应用程序现在有两个不同的 React 副本。 从包中删除 node_module 文件夹并重新安装包再次解决了我的问题。


Javascript:如何获取单击按钮的innerHTML

构建了一个小费计算器,但希望通过获取正在单击的按钮的innerHTML来缩短代码。 账单总额: 构建了一个小费计算器,但想通过获取正在单击的按钮的innerHTML来缩短代码。 Total Bill: <input id="bill" type="text"> <button type="button" onclick="tip15()">15</button> <button type="button" onclick="tip18()">18</button> <button type="button" onclick="tip20()">20</button> <div id="tip">You owe...</div> function tip15(){ var totalBill = document.getElementById("bill").value; var totalTip = document.onclick.innerHTML var tip = totalBill * 0.15; document.getElementById("tip").innerHTML = "&#36;" +tip } 这种方法的问题是我必须写出三个版本的函数来与小费金额相对应。我想创建一个函数来获取被单击按钮的innerHTML 并在函数中使用该值。我希望它看起来像这样 function tip(){ var totalBill = document.getElementById("bill").value; **var totalTip = GET INNERHTML OF CLICKED BUTTON** var tip = totalBill * ("." + totalTip); document.getElementById("tip").innerHTML = "&#36;" +tip } 这样我就可以在不同的按钮上运行相同的功能。 使用 HTML5 数据属性。 <button type="button" data-tip="15" onclick="getTip(this)">15</button> 您传递给函数的参数this指的是正在单击的按钮。然后你就可以得到这样的属性值: function tip(button){ var tip= button.getAttribute("data-tip"); ... } 剩下的留给你了。 像这样改变:将值传递给tip函数。 <button id="15" type="button" onclick="tip(15)">15</button> <button id="18" type="button" onclick="tip(18)">18</button> <button id="20" type="button" onclick="tip(20)">20</button> function tip(tip_value) { /*use here tip_value as you wish you can use if condition to check the value here*/ var totalBill = document.getElementById("bill").value; var totalTip = tip_value; var tip = totalBill * ("." + totalTip); document.getElementById("tip").innerHTML = "&#36;" +tip; } 将 this.innerHTML 作为参数传递给您的小费函数。 所以你的小费函数应该是这样的: function tip(totalTip) { var totalBill = document.getElementById("bill").value; var tip = totalBill * ("." + totalTip); document.getElementById("tip").innerHTML = "&#36;" +tip } 因此,如果您有一个如下所示的按钮元素: <button type="button" onclick="tip(this.innerHTML)">15</button> 提示函数将被称为 tip(15)。 我会写一个快速解决方案,然后解释为什么我这样做。 建议的解决方案 第 1 部分,HTML <div id="tip-wrapper"> <label for="bill">Total bill:</label> <input name="bill" id="bill" type="text"> <br/> <label for="tipratio">Tip ratio:</label> <button name="tipratio" value="15" type="button">15%</button> <button name="tipratio" value="18" type="button">18%</button> <button name="tipratio" value="20" type="button">20%</button> <div id="final-value">You owe...</div> </div> 第 2 部分,JavaScript var parent = document.getElementById('tip-wrapper'), buttons = parent.getElementsByTagName('button'), max = buttons.length, i; // function that handles stuff function calculate (e) { var bill = document.getElementById('bill'), tipRatio = e.target.value; document.getElementById('final-value').textContent = bill.value * (1+tipRatio/100); } // append event listeners to each button for(i = 0; i < max; i++) { buttons[i].addEventListener('click', calculate, true); } 说明 关于 HTML,并没有“太多”改变。唯一的事情是我使用的东西更符合标准。 我添加了一个 wrapper 元素,这只是为了隔离一些 DOM 遍历,而不是遍历整个文档对象来进行查找(这将加快您的脚本速度)。 您的按钮使用“值”属性,这是最好的。因为您可以以一种方式显示按钮文本,但使用正确的值(请参阅我添加了 % 字符)。 除此之外,我主要添加了适当的标识符和标签。 JavaScript,这是我将更详细地介绍的地方,我将逐步介绍: 您在脚本中要做的第一件事是设置您需要的变量(并获取您将使用的 DOM 元素。这就是我在前 4 行代码中所做的事情。 创建一个通用函数来处理您的计算并更新您的元素,无论其数值如何。我在这里使用的功能是向您的函数添加一个参数 (e),因为 javascript 中的 EVENTS 将 EVENT OBJECT 附加到您的回调函数(在本例中为 calculate();)。 EVENT OBJECT 实际上有很多有用的属性,我使用其中的: target:这是触发事件的元素(即您的按钮之一) 我们所要做的就是获取目标值 (e.target.value) 并将其用于返回最终账单的数学中。 使用addEventListener。人们普遍认为应该将 JavaScript 保留在 HTML 之外,因此不鼓励使用旧的事件方法 (onclick="")。 addEventListener()方法并不太复杂,不做详细介绍,其工作原理如下: htmlObject.addEventListener('事件类型', '回调函数', '冒泡true/false'); 我所做的只是循环遍历所有按钮并附加事件 lsitener。 结束语 使用此脚本,您现在可以添加任何您想要的“按钮”,脚本会将它们全部考虑在内并进行相应调整。只要确保设置它们的“值”即可。 当我写这篇文章时,一些人给出了一些快速的答案。我还不能发表评论(声誉低),所以我会在这里留下我的评论。 一些建议的答案告诉您使用innerHTML来获取小费值。这是错误的,您正在使用表单字段,应该使用 element.value,这就是它的用途。 有些人甚至敢说使用 HTML5 data-* 属性。当然,你可以。但你为什么要这么做呢? HTML 和 DOM 已经提供了完成任务所需的所有工具,而无需使用不必要的属性来污染 HTML。 value="" 属性旨在在表单中使用,它应该在字段值的 data-* 属性上使用。 一般来说,innerHTML旨在获取 HTML,而不一定是文本或值。还有其他方法可以获取您正在寻找的值。对于表单元素,它是 element.value,对于大多数其他 HTML 元素,它是 element.textContent。 希望这些解释有帮助 function tip(o) { var input = document.querySelector("input[id='bill']"); var total = input.value * o.innerHTML; document.querySelector("#tip").innerHTML = "&#36;" + total; } Total Bill: <input id="bill" type="text"> <button type="button" onclick="tip(this)">15</button> <button type="button" onclick="tip(this)">18</button> <button type="button" onclick="tip(this)">20</button> <div id="tip">You owe...</div> 嘿我最近找到了解决这个问题的简单方法: 您可以将内部文本作为元素的 id 提供。在事件处理程序中,您可以通过以下方式访问内部文本: e.目标.id 希望这个解决方案可以帮助您:)


© www.soinside.com 2019 - 2024. All rights reserved.