小编Edu*_*ard的帖子

错误"JSX元素类型'''没有任何构造或调用签名"是什么意思?

我写了一些代码:

function renderGreeting(Elem: React.Component<any, any>) {
    return <span>Hello, <Elem />!</span>;
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

JSX元素类型Elem没有任何构造或调用签名

这是什么意思?

typescript reactjs material-ui

124
推荐指数
12
解决办法
7万
查看次数

如何在React-Native中获得键盘的高度?

我在我的应用程序中使用React-Navigation,该应用程序包含多个屏幕的StackNavigator,其中一些屏幕具有TextInput, autoFocus={true}

问题:在组件渲染时在这些屏幕上,屏幕的高度在构造函数中设置:

constructor(props) {
    super(props);
    this.state = { 
        height: Dimensions.get('window').height,
    };
}
Run Code Online (Sandbox Code Playgroud)

但是,由于autoFocusTextInput是true,因此在渲染后,屏幕上的键盘几乎立即弹出,导致组件重新渲染,因为在componentWillMount中添加到Keyboard的eventListener:

 componentWillMount() {
    this.keyboardWillShowListener = Keyboard.addListener(
        "keyboardWillShow",
        this.keyboardWillShow.bind(this)
    );
}

keyboardWillShow(e) {
    this.setState({
        height:
            Dimensions.get("window").height * 0.9 - e.endCoordinates.height
    });
    LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);
}
Run Code Online (Sandbox Code Playgroud)

这会影响性能,我希望避免不必要的重新渲染.

问题:
1.是否可以在React-Navigation的ScreenProps中设置键盘的动态高度(取决于设备)?
2. React-Navigation的state.params是否可以这样做?
3.除了应用KeyboardAvoidingView或此模块之外,还有其他方法可以解决此问题吗?

javascript keyboard react-native react-navigation

29
推荐指数
4
解决办法
2万
查看次数

重命名 typescript 对象类型的键

我有这个:

type Two = {
  one: number,
  two: string,
  three: boolean
}
Run Code Online (Sandbox Code Playgroud)

我希望它创建一个看起来像这样的类型:

type RenamedTwo = {
  one: number,
  two: string,
  four: boolean // difference
}
Run Code Online (Sandbox Code Playgroud)

试图以这种方式创建它:

type Rename<T, K extends keyof T, N> = Pick<T, Exclude<keyof T, K>> & { [N]: T[K] }
Run Code Online (Sandbox Code Playgroud)

尝试使用这种方式:

type Renamed = Rename<Two, 'three', 'four'>
Run Code Online (Sandbox Code Playgroud)

但是 TSlint 标记[N]为错误并给出以下错误消息:

[ts] 类型文字中的计算属性名称必须引用类型为文字类型或“唯一符号”类型的表达式。[ts] 'N' 仅指一种类型,但在此处用作值。

typescript

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

一个项目中可以使用多个Babel预设吗?

我正在开发一个React-Native应用程序,该应用程序是使用Expo安装的,它使用以下代码创建.babelrc配置:

{
    "presets": ["babel-preset-expo"],
    "env": {
        "development": {
            "plugins": ["transform-react-jsx-source"]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

最近,我遇到了另外两个需要安装其他类型的babel预设的库,它们分别名为:"react-native""flow"

问题:如何合并3个预设?

javascript babel react-native expo

8
推荐指数
1
解决办法
2142
查看次数

与打字稿中的"选择"相反

我正在尝试组合一个类型,与之类似Pick,它将从对象类型中删除某些属性.

它应该这样工作:

type ObjectType = { 
    key1: number, 
    key2: string, 
    key3: boolean, 
    key4: number[] 
}

let obj: Remove<ObjectType, 'key2' | 'key4'>
Run Code Online (Sandbox Code Playgroud)

这里obj的类型应该是:{key1:number,key3:boolean}

typescript

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

用于搜索突出显示文本的 VS Code 快捷方式

是否有一个快捷方式类似于“在文件中查找”快捷方式,但也可以搜索突出显示的文本?

在此输入图像描述

visual-studio-code

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

ExpressJS 的 cookie 会话库的 key 属性有什么意义?

我正在研究后端编程,特别是 Node.js 和 ExpressJS,目前让我感到困惑的是 cookie-session 库的“keys”道具如何帮助我们?它的意义何在?已经阅读了许多与身份验证、会话等相关的不同材料,但是这个特定问题的答案对我来说仍然是模棱两可的。

有人能给我一个深入的解释,最好是两种方式:简单的术语和使用编程词典,关于这个主题?

cookies node.js express passport.js cookie-session

6
推荐指数
1
解决办法
1379
查看次数

检查是否在package.json中通过终端安装了npm包

我试图找到一种方法来检查我的项目中是否通过终端安装了特定的包.那是否有命令?有点像npm check redux.

terminal npm

6
推荐指数
1
解决办法
2738
查看次数

如何定义对象的类型以仅接受枚举中的键?

我有一个枚举:

enum MyEnum {
    One,
    Two,
    Three
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个 React Component 方法,它应该返回一个对象,其键只能是 MyEnum 的字符串键(意思是,到目前为止:一、二、三):

myFunction = (someValue: {}[]): {} => {
    return someValue.reduce((res, v, i) => {
         res[v.name].push(v)
         return res
    }, {})
}
Run Code Online (Sandbox Code Playgroud)

问题:如何动态定义该函数的返回值类型为对象,其键只能是MyEnum的字符串键?

现在只有 3 个,但是如果我向枚举中添加另一个,则 myFunction 返回值的类型也应该更新。

更新1:

尝试分配Record<keyof typeof MyEnum, any>作为返回值:

myMethod = (someValue: {}[]): Record<keyof typeof MyEnum, any> => {
    return someValue.reduce((res: any, v: SomeInterface) => {
         res[v.name].push(v)
         return res
    }, {})
}
Run Code Online (Sandbox Code Playgroud)

这不会引发任何错误,但是如果我将reduce的返回值分配给一个变量,然后在其上添加另一个属性(其键不是MyEnum键),则不会出现错误,这不是我所寻求的:

myMethod = (someValue: {}[]): Record<keyof typeof MyEnum, any> => …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs

6
推荐指数
1
解决办法
8906
查看次数

如何删除PostgreSQL表中一定数量的最后一行?

不引用 SERIAL id。

就像是:

delete from users LAST 3
Run Code Online (Sandbox Code Playgroud)

这将从表中删除最后 3 行。

postgresql

5
推荐指数
1
解决办法
4551
查看次数