引言:
食品安全问题一直是社会关注的热点,而食品溯源作为解决食品安全问题的重要手段,其重要性不言而喻。传统的食品溯源系统往往存在数据易被篡改、信息不透明等问题,而区块链技术的引入,为食品溯源带来了革命性的变革。
目录
引言:
区块链食品溯源系统概述
前端代码实现
安装依赖
创建React组件
在App中引入组件
运行与测试
前端代码实现
- 下面是一个简单的基于区块链的食品溯源前端代码示例,使用了React框架和Web3.js库与区块链进行交互。
安装依赖
- 首先,确保已经安装了Node.js和npm。然后,在项目根目录下执行以下命令安装依赖:
npm install react react-dom react-scripts web3
创建React组件
- 在
src
目录下创建一个名为FoodTraceability.js
的React组件文件,并编写以下代码:
import React, { useState, useEffect } from 'react';
import Web3 from 'web3';
const FoodTraceability = () => {
const [foodInfo, setFoodInfo] = useState(null);
const [loading, setLoading] = useState(false);
const [error, setError] = useState(null);
useEffect(() => {
const loadFoodInfo = async () => {
try {
// 初始化Web3对象
const web3 = new Web3(Web3.givenProvider || 'http://localhost:7545');
// 连接到区块链网络(这里以本地开发环境为例)
const contractAddress = 'YOUR_CONTRACT_ADDRESS'; // 替换为你的合约地址
const abi = [...]; // 替换为你的合约ABI
const foodTraceabilityContract = new web3.eth.Contract(abi, contractAddress);
// 调用合约方法获取食品信息(这里假设有一个名为getFoodInfo的方法)
setLoading(true);
const result = await foodTraceabilityContract.methods.getFoodInfo('YOUR_FOOD_ID').call();
setFoodInfo(result);
setLoading(false);
} catch (e) {
setError(e.message);
setLoading(false);
}
};
loadFoodInfo();
}, []);
if (loading) {
return <div>Loading...</div>;
}
if (error) {
return <div>Error: {error}</div>;
}
if (!foodInfo) {
return <div>No food info found.</div>;
}
return (
<div>
<h1>Food Traceability</h1>
<p>Food ID: {foodInfo.id}</p>
<p>Producer: {foodInfo.producer}</p>
<p>Production Date: {foodInfo.productionDate}</p>
{/* 根据实际需求添加更多展示信息 */}
</div>
);
};
export default FoodTraceability;
- 代码中的
YOUR_CONTRACT_ADDRESS
、YOUR_FOOD_ID
和...
(合约ABI)需要替换为实际的值。你可以通过智能合约部署工具获取合约地址和ABI,并根据你的合约定义修改getFoodInfo
方法的调用方式。
在App中引入组件
- 在
src/App.js
文件中引入并使用FoodTraceability
组件:
import React from 'react';
import './App.css';
import FoodTraceability from './FoodTraceability';
function App() {
return (
<div className="App">
<header className="App-header">
<FoodTraceability />
</header>
</div>
);
}
export default App;
运行与测试
- 在项目根目录下执行以下命令启动开发服务器
npm start
然后,在浏览器中打开http://localhost:3000/ 访问地址