我们从 npm 安装的一些包同时支持 commonjs 和 es 模块,
这些包可以按如下方式导入:
import express from 'express'
// or
const express = require('express')
Run Code Online (Sandbox Code Playgroud)
我创建了一个包,已使用 es 模块将其发布到 npm。
因为我正在开发的另一个项目是用 commonjs 构建的,所以我意识到我不能使用以下语法来要求它:
const stackPlayer = require('stack-player')
Run Code Online (Sandbox Code Playgroud)
我怎样才能支持我的包stack-player中的两个模块系统,以便世界各地的每个人都可以使用它?
我在 Node.js v18.17.1 和 TypeScript v5 上运行。
我听说了新的 JavaScript 方法Object.groupBy()
。
const inventory = [
{ name: "asparagus", type: "vegetables", quantity: 5 },
{ name: "bananas", type: "fruit", quantity: 0 },
{ name: "goat", type: "meat", quantity: 23 },
{ name: "cherries", type: "fruit", quantity: 5 },
{ name: "fish", type: "meat", quantity: 22 },
];
const result = Object.groupBy(inventory, ({ type }) => type);
console.log(result)
Run Code Online (Sandbox Code Playgroud)
当我编写代码时Object.groupBy()
,出现以下 TypeScript 错误:
Property 'groupBy' does not exist on type 'ObjectConstructor'.ts(2339) …
Run Code Online (Sandbox Code Playgroud) const formSubmit = async (e) => {
e.preventDefault()
const formData = new FormData(e.target)
const email = formData.get('email')
const password = formData.get('password')
try {
const res = await axios.post('http://172.16.2.19:3001/api/v1/auth/login', {
email,
password,
})
console.log(res.data) // its okay, I can login if email & password are correct.
} catch (error) {
console.log(error)
}
}
Run Code Online (Sandbox Code Playgroud)
const cors = require('cors')
app.use(cors({ credentials: true }))
Run Code Online (Sandbox Code Playgroud)
// ... code, then... if email & password are correct: …
Run Code Online (Sandbox Code Playgroud) 我正在使用一个名为Material-UI 的库来构建我的应用程序布局。<ListItemButton>
我在我的应用程序的侧导航中使用它的组件。现在。该组件<ListItemButton>
不是链接,而是按钮。但它有一些样式,你可以在这里看到它的样子,点我。这个组件接受一个component
prop,这个component
prop 的作用是它基本上允许你在它内部渲染一些东西,例如,我可以给它<div/>
,我可以给它<a/>
我可以给它<b/>
等等,但我也可以给它一个 React成分。这就是我在这里所做的。我给它 React 路由器<NavLink>
组件。
现在。这很简单,只要给它<NavLink>
组件,它就会工作。但是,不幸的是,它不允许您写<NavLink>
为<NavLink>
,您必须将其写为NavLink
不带括号,因此,我无法向它传递任何参数。
幸运的是,这个 Material-UI 的工作方式是,当它在其组件之一中看到一个 prop(例如<ListItemButton>
它不理解的组件)时,它会自动将该 prop 传递给子组件。因此,在我们的例子中,如果我们编写了一个不在<ListItemButton>
文档中的 prop,它会将其传递给NavLink
组件。
因此,我们可以传递该to
道具。如下:
<ListItemButton to="/users" component={NavLink}>\n
Run Code Online (Sandbox Code Playgroud)\n到目前为止,一切都很好。我们要做的最后一件事是确保只要搜索栏中的链接与 NavLink指定的路径匹配,ListItemButton 组件就会突出显示。
\n好消息是,它<ListItemButton>
有一个预定义的道具,可以使其在屏幕上看起来像所选的那样,因此它突出显示的颜色有点暗。这个 prop 称为selected
prop,它接受一个布尔值(true或false)。所以:
我们应该怎么做?我们可以通过比较搜索栏中的 URL 是否与我们在 …
我正在使用 MUI x(社区版本),我想隐藏特定列的选项菜单,而不是所有列。我仍然希望其他人显示此菜单,但仅对于此列,我想隐藏它。如何?
disableColumnMenu
对所有列禁用它。
// const columns = [ ... etc, then eventually
{ field: 'actionMenu', headerName: strings.actions, sortable: false, filterable: false },
// ]
Run Code Online (Sandbox Code Playgroud)
<DataGrid
disableSelectionOnClick
rows={rows}
columns={columns}
density="compact"
loading={isLoading}
components={{ Toolbar: GridToolbar }}
localeText={{
noRowsLabel: strings.noModerators,
}}
/>
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个可以通过以下方式调用的函数:
log()
log.error()
Run Code Online (Sandbox Code Playgroud)
根据我的理解,我们可以通过在函数本身上编写来创建这样一个函数:
log()
log.error()
Run Code Online (Sandbox Code Playgroud)
不建议这样写函数吗?因为 JavaScript 将来可能会发布一个可能包含“错误”属性的更新,所以我的“错误”属性将覆盖该 JavaScript 功能。
下面是一个示例,说明人们可能会在何处使用此模式以及它为何有用。
例如,Jquery:
function log(){
}
log.error = () => {}
Run Code Online (Sandbox Code Playgroud)
和
$( "#button-container button" ).on( "click", function( event ) {} )
Run Code Online (Sandbox Code Playgroud)
您在许多流行的图书馆中都会看到这种模式。
是$
一个对象,
它是可调用的,所以你可以调用它$('css query selector here')
,它是可链接的,所以你可以调用它的其他方法$().on()
,并且它有方法$.ajax()
我有以下字符串:
const str = "prop1.prop2.prop3"
Run Code Online (Sandbox Code Playgroud)
我想使用这个字符串来访问以下对象的属性 prop3:
const obj = {
prop1: {
prop2:{
prop3:{
// ---- destination point
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我不知道该怎么做?一定有什么东西不断地添加obj[currentProp]
等等。还有..没有更快的方法吗?我担心我把时间浪费在更容易实现的事情上
我有一个 typedef 的 JSDoc 注释,如下所示,
/**
* @typedef {Object} obj1
* @property {boolean} a - Property 1
* @property {boolean} b - Property 2
*/
Run Code Online (Sandbox Code Playgroud)
我想要一个新的 typedef,其中还包含以下属性:
* @property {boolean} c - Property 3
* @property {boolean} d - Property 4
Run Code Online (Sandbox Code Playgroud)
除了a和b之外,如何向对象添加任何其他属性?
在代码中,它是这样的:
/**
* @typedef {Object} obj1
* @property {boolean} a - Property 1
* @property {boolean} b - Property 2
*/
Run Code Online (Sandbox Code Playgroud)
正如你所看到的, a和b是共享的,所以我不想重复定义它们,它们是完全相同的。
如何向现有定义添加属性?
在代码中,我们可以这样做:
* @property {boolean} c - Property 3 …
Run Code Online (Sandbox Code Playgroud) javascript ×7
node.js ×2
reactjs ×2
typescript ×2
axios ×1
cookies ×1
express ×1
jsdoc ×1
material-ui ×1
react-router ×1