首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Solid-js组件的Typescript类型

Solid-js组件的Typescript类型
EN

Stack Overflow用户
提问于 2021-02-05 22:48:48
回答 2查看 515关注 0票数 1

如何将Solid-JS文档中的first example转换为有效的typescript?

代码语言:javascript
复制
import { render } from "solid-js/web"

const HelloMessage = props => <div>Hello {props.name}</div>

render(() => <HelloMessage name="Taylor" />, document.getElementById("hello-example"))

我收到一个关于props没有类型提示的错误,特别是Parameter 'props' implicitly has an 'any' type.

使用react时,我会使用React.FC,但使用Solid-JS时,我找不到等价物。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-05 22:48:48

我找到了解决方案,就是使用Component泛型:

代码语言:javascript
复制
import {render} from 'solid-js/web'
import {Component} from 'solid-js'

const HelloMessage: Component<{name: string}> = ({name}) => <div>Hello {name}</div>

render(() => <HelloMessage name="Taylor" />, document.getElementById("hello-example"))
票数 3
EN

Stack Overflow用户

发布于 2021-03-10 02:15:07

另一种方法可以如下所示(无需导入类型Component):

» Demo

代码语言:javascript
复制
import {render} from 'solid-js/web'

function HelloMessage(props: {
  name: string
}) {
  return (
    <div>
      Hello {props.name}
    </div>
  )
}

render(() => <HelloMessage name="Taylor" />, document.getElementById('app'))

或者,如果您愿意:

代码语言:javascript
复制
const HelloMessage = (props: { name: string }) =>
  <div>Hello {props.name}</div> 

顺便说一下:在你的问题中,你使用了Hello {props.name},这很好,因为props是一个反应式对象,表达式props.name也是反应式……在你的回答中,你使用的是Hello {name},它永远不会更新,因为name只是一个字符串,本质上是常量,因此是无反应的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66065357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档