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

Fresh.js中props.data被弃用后的替代方案是什么?

Fresh.js 中 props.data 弃用后的推荐传参方式

Fresh 目前已弃用 props.data,推荐通过组件state来传递服务端获取的数据,以下是具体实现方式:

1. 动态路由页面的服务端数据传递

在路由的handler函数中,将原本存入data的数据改为存入state字段,再在页面组件中从props.state读取数据:

// routes/[slug].tsx
import { Handlers, PageProps } from "$fresh/server.ts";

export const handler: Handlers = {
  async GET(_req, ctx) {
    // 读取目标文本文件内容
    const textContent = await Deno.readTextFile(`./content/${ctx.params.slug}.txt`);
    // 将数据存入state而非原data字段
    return ctx.render({ state: { textContent } });
  },
};

export default function DynamicPage(props: PageProps) {
  // 从props.state中提取数据
  const { textContent } = props.state;
  return <div className="text-container">{textContent}</div>;
}

2. 组件间的普通传参

如果是组件之间传递数据(非服务端获取场景),直接通过组件props传递即可,无需依赖state或废弃的data:

// components/TextDisplay.tsx
// 定义接收props的类型
type TextDisplayProps = {
  content: string;
};

export default function TextDisplay({ content }: TextDisplayProps) {
  return <div className="prose">{content}</div>;
}

// 在路由组件中调用该组件
export default function DynamicPage(props: PageProps) {
  const { textContent } = props.state;
  return <TextDisplay content={textContent} />;
}

注意事项

  • 当前props.data仍能正常工作是因为Fresh保留了兼容逻辑,但后续版本大概率会移除该属性,建议尽快完成迁移。
  • 使用state的方式更贴合Fresh后续的设计逻辑,数据流向也更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 18:44:53