小编ukr*_*kri的帖子

如何将反应组件转换为 html 字符串?

在这里发现了类似于我的问题。

但我有一些不同的场景。我有 html 字符串,而不仅仅是字符串。所以,我想做:

让我们假设 MyComponent 现在只是返回 h3 元素:

const MyComponent = ({children}) => (<h3>{children}</h3>)

var parts = "<h1>I</h1><p>am a cow;</p>cows say moo. MOOOOO."
    .split(/(\bmoo+\b)/gi);
for (var i = 1; i < parts.length; i += 2) {
  parts[i] = <MyComponent key={i}>{parts[i]}</MyComponent>;
}
// But I need html to be rendered
return <div dangerouslySetInnerHTML={{ __html: parts }} />
Run Code Online (Sandbox Code Playgroud)

这将在浏览器中呈现如下:

I
am a cow;
cows say ,[object Object],. ,[object Object],.
Run Code Online (Sandbox Code Playgroud)

我在这里能想到的解决这个问题的方法是首先用 html 字符串转换组件。

parts[i] = convertToStringOfHtml(<MyComponent key={i}>{parts[i]}</MyComponent>);
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将组件转换为 html 字符串。

javascript reactjs

11
推荐指数
1
解决办法
2万
查看次数

如何在for循环中使用switch语句?

for(var i=0; i<20; i++) {
  if(i%3===0) {
   console.log(i, 'Foo')
  } else {
   console.log(i, 'Default')
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想知道如何在循环内使用 switch 语句编写代码:

for(var i=0; i<20; i++) {
  switch(i) {
   case (i%3===0):
    console.log(i,'Foo')
    break
   default:
    console.log(i,'Default')
    break
  }
}
Run Code Online (Sandbox Code Playgroud)

但它总是导致“默认”。我曾尝试使用标签、匿名函数等,但无法像 if 条件那样输出。我的 switch 语句有问题吗?

编辑:

事实上,我试图这样做:

case (i%3===0):
   console.log(i,'Foo')
   break
case (i%5===0):
   console.log(i,'Bar')
   break
Run Code Online (Sandbox Code Playgroud)

javascript

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

标签 统计

javascript ×2

reactjs ×1