You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Trello自定义Card组件如何传递额外的自定义prop参数

实现方案

方案1:将自定义字段写入卡片原始数据(推荐,业务属性绑定场景)

React Trello会自动将卡片的完整原始数据作为prop传递给自定义Card组件,你可以直接在lanes的cards数组中新增自定义字段:

const lanes = [
  {
    id: 'todo',
    title: '待处理',
    cards: [
      {
        id: 'card1',
        title: '完成首页开发',
        // 以下为自定义字段
        priority: 'high',
        assignee: '张三',
        deadline: '2024-06-30'
      }
    ]
  }
]

之后你在TrelloCard组件中可以直接通过props.priority、props.assignee等拿到对应自定义属性,无需额外修改Board组件配置。

方案2:用高阶组件包裹自定义Card(通用场景,传递全局/动态属性)

如果要传递的是全局配置、事件回调这类和卡片本身数据无关的属性,可以用高阶组件把自定义prop闭包传入:

// 定义要传递的自定义属性,支持动态state
const customProps = {
  userRole: 'admin',
  onTagClick: (tagId) => console.log('点击标签', tagId)
}

// 包裹自定义Card,合并默认prop和自定义prop
const WrappedTrelloCard = (defaultCardProps) => {
  return <TrelloCard {...defaultCardProps} {...customProps} />
}

修改Board的components配置,将Card替换为包装后的组件即可:

<Board
  data={{ lanes }}
  editable={false}
  components={{ NewCardForm: CardForm, Card: WrappedTrelloCard }}
  style={{ background: 'transparent' }}
/>

如果自定义prop是会变化的状态值,建议用useCallback缓存包装组件,避免不必要的重渲染:

const [currentUser, setCurrentUser] = useState({role: 'editor'})

const WrappedTrelloCard = useCallback((defaultProps) => {
  return <TrelloCard {...defaultProps} currentUser={currentUser} />
}, [currentUser])

内容的提问来源于stack exchange,提问作者Shira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:48:02