如何在 React js 中将 props 传递给组件

Posted

技术标签:

【中文标题】如何在 React js 中将 props 传递给组件【英文标题】:How to pass props to components in React js 【发布时间】:2021-05-06 18:09:38 【问题描述】:

我正在使用 React JS 开发一个项目,我想将一个道具传递给一个数组, 这是组件:

import React,  Component  from 'react';
import  Link  from 'react-router-dom';

class TaskItem extends Component 
  
  render() 
    const task = this.props.task;

    return (
        <tr>
          <Link to=`/tasks/$task.id`>
                task.name
          </Link>
        </tr>
    );
  


export default TaskItem;

我希望task.name 的值出现在这个数组的标题中:

const todoDB = 
    todos  : [
        
        //Proident tempor est nulla irure ad est
            'id'       : '561551bd7fe2ff461101c192',
            'title'    : ' ===> HERE <===' ,
            'notes'    : 'Id nulla nulla proident deserunt deserunt proident in quis. Cillum reprehenderit labore id anim laborum.',
            'startDate': new Date(2018, 8, 3),
            'dueDate'  : new Date(2018, 8, 5),
            'completed': false,
            'starred'  : false,
            'important': false,
            'deleted'  : false,
            'labels'   : [1]
        
]

数组和组件不在同一个文件中 我希望这些信息足以理解我的问题,谢谢

【问题讨论】:

您是在寻找一种从 json 数组中读取的方法,还是尝试将其存储在数组中? 我正在尝试将task.name 的值存储在数组中 【参考方案1】:

您可以将 todoDB.todos 数组转换为函数,将 prop 传递给函数并调用它。像下面这样的:

const todoDB = 
  todos: (props) => [
    'id': '561551bd7fe2ff461101c192',
    'title': props,
    'notes': 'Id nulla nulla proident deserunt deserunt proident in quis. Cillum reprehenderit labore id anim laborum.',
    'startDate': new Date(2018, 8, 3),
    'dueDate': new Date(2018, 8, 5),
    'completed': false,
    'starred': false,
    'important': false,
    'deleted': false,
    'labels': [1]
  ]

console.log(todoDB.todos("this is the title")[0].title)

【讨论】:

【参考方案2】:

我对您的要求并不完全清楚,但以下是一个可以按照您提供的格式生成任务数组的函数。

const generateTodoDB = todos => (
    todos: todos.map(todo => (
        'id'       : '561551bd7fe2ff461101c192',
        'title'    : todo.title,
        'notes'    : 'Id nulla ...',
        'startDate': new Date(2018, 8, 3),
        'dueDate'  : new Date(2018, 8, 5),
        'completed': false,
        'starred'  : false,
        'important': false,
        'deleted'  : false,
        'labels'   : [1]
    )
)

现在您只需调用 generateTodoDB 函数,传入一个待办事项数组。

const myTodos = [ title: "Get Milk" ,  title: "Get Bananas" ];
const todoDB = generateTodoDB(myTodos);

generateTodoDB 是一个所谓的箭头函数。它会自动返回其函数的结果,因为它的主体被包裹在括号中。 todos.map 也是如此。

const fn1 = () => ( thisObject: "gets returned" )
const fn2 = () =>  return  thisObjectDoes: "not return automatically"  

【讨论】:

以上是关于如何在 React js 中将 props 传递给组件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 React 中将 props 传递给 jest 测试

在 TS 中将 props 传递给 makeStyle

如何使用 React js 中的上下文将函数从 FUNCTIONAL 传递给 CLASS 组件并在渲染之外(没有 prop)访问它?

如何将使用 Enzyme.js 渲染的组件传递给 props?

如何在 React.js 中将道具从一个类传递到另一个类

我可以通过 props.children React JS 将道具传递给孩子吗