首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用<Link>构建一个使用循环反应的句子?

如何用<Link>构建一个使用循环反应的句子?
EN

Stack Overflow用户
提问于 2019-07-22 09:14:20
回答 4查看 945关注 0票数 2

我想在网上把这个打印出来。

通过创建一个帐户强制,你同意ArticleA,ArticleB,ArticleC,.ArticleX。

其中链接是来自material-ui的组件。

代码语言:javascript
复制
const createTACLine = (article, isMandatory) => {
  let cline = '';

  if (isMandatory) {
    cline = cline + '[Mandatory] By creating an account, you agree to ';
  }
  Object.keys(article).forEach(function (key) {

    cline = cline +  <Link
        component="button"
        variant="body2"
        to="/"
    > +{article[key].name}+ </Link>;
    if (parseInt(key) !== article.length - 1) {
      cline = cline + ', ';
    }

  });

  cline = cline + ".";

  return cline;
};

这里的文章

代码语言:javascript
复制
{
    "id": 12,
    "name": "ArticleA",
    "url": "http://.....",
},
{
    "id": 13,
    "name": "ArticleB",
    "url": "http://.....",
},
{
    "id": 13,
    "name": "ArticleC",
    "url": "http://.....",
},
{
    "id": 14,
    "name": "ArticleX",
    "url": "http://.....",
}

相反,我得到了以下信息。

通过创建帐户强制,您同意对象对象、对象对象。

我看到了很多例子使用推推列表项目,但我需要在这里建立一个句子。是否有其他方法可以使用循环构建字符串?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-07-22 13:51:33

试一试:

代码语言:javascript
复制
  createTACLine = (article, isMandatory) => {
    return (
      <div>
        {isMandatory ? "[Mandatory] By creating an account, you agree to " : ""}
        {article
          .map(art => {
            return (
              <Link component="button" variant="body2" to={art.url}>
                {art.name}
              </Link>
            );
          })
          .reduce((prev, curr) => [prev, ", ", curr])}
      </div>
    );
  };
票数 2
EN

Stack Overflow用户

发布于 2019-07-22 09:35:20

看起来,您正在将数组传递给字符串,但真正需要的是提取项目名称。

下面是一个实用的沙箱:https://codesandbox.io/s/friendly-feather-ihoh4

工作代码:

代码语言:javascript
复制
import React from "react";
import ReactDOM from "react-dom";
import Link from "@material-ui/core/Link";

import "./styles.css";

const article = [
  {
    id: 12,
    name: "ArticleA",
    url: "http://....."
  },
  {
    id: 13,
    name: "ArticleB",
    url: "http://....."
  },
  {
    id: 13,
    name: "ArticleC",
    url: "http://....."
  },
  {
    id: 14,
    name: "ArticleX",
    url: "http://....."
  }
];

class App extends React.Component {
  createTACLine = (article, isMandatory) => {
    let cline = "";

    if (isMandatory) {
      cline = cline + "[Mandatory] By creating an account, you agree to ";
    }

    article.forEach((art, index) => {
      if(index === 0){
        cline = cline + art.name
      } else {
        cline = cline + ", " + art.name
      }

    });

    return (
      <Link component="button" variant="body2" to="/">
        {cline}
      </Link>
    );
  };

  render() {
    return <div>{this.createTACLine(article, true)}</div>;
  }
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
票数 1
EN

Stack Overflow用户

发布于 2019-07-22 09:25:15

这里的文章似乎是一组对象。试一试

代码语言:javascript
复制
article.forEach(obj => {
 // your Link with obj.name
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57142732

复制
相关文章

相似问题

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