TGViewer
tmadevs tmadevs @tmdevs · 155 subscribers
Post #44 996
рубрика ответы на вопросы

как с фронта на реакте отправить транзакцию на смарт контракт с определенными параметрами?


1) создаём в проекте папку contracts и закидываем туда файл с контрактом, например collections.ts

/src/contracts/collection.ts


2) В файле создаем класс, который будет хранить всё что нужно для взаимодействия с ним, внизу показан пример


import { ActionConfiguration, TonConnectUI } from "@tonconnect/ui-react";

export const tonConnectOptions: ActionConfiguration = {
modals: [],
notifications: [],
twaReturnUrl: "https://t.me/MetaMinterBot/app",
};

export type MintNftData = {
tonConnect: TonConnectUI;
userAddress: string;
collectionAddress: string;
price: number;
quantity: number;
};

export class CollectionContract {
constructor() {}

async mint({ tonConnect, collectionAddress, price, quantity }: MintNftData) {
try {
return await tonConnect.sendTransaction(
{
validUntil: Math.floor(Date.now() / 1000) + 90, // время на подтверждение транзакции
messages: [ // сообщение транзакции
{
address: collectionAddress,
amount: toNano(price * quantity).toString(),
payload: this.createBodyMessage(quantity)
.toBoc()
.toString("base64"),
},
],
},
tonConnectOptions // настройки tonConnect
);
} catch (e) {
throw new Error("Cannot mint nft. Some error occurred");
}
}
}


3) Вызываем отправку транзакции в любом из наших файлов


import { useTonAddress, useTonConnectUI } from "@tonconnect/ui-react";

export const Page: React.FC = () => {
const [tonConnect] = useTonConnectUI();
const collectionContract = new CollectionContract();
const userAddress = useTonAddress();

const handleMint = async () => {
await collectionContract.mint({
tonConnect,
userAddress,
collectionAddress: COLLECTION_ADDRESS,
quantity: QUANTITY,
price: NFT_PRICE,
});
};



Так делается красиво 💪
  • 👍 17
  • 🔥 6
  • ❤ 2
  • 🤡 1
  • 💯 1
More from @tmdevs
  1. Feb 6, 2026приветствую. а есть фронтендщики которым нужна подработка?
  2. Dec 30, 2025всех с наступающим новым годом!🎅 в новом году скидок на frontend не будет, поэтому можете…
  3. Aug 3, 2025Кому-то интересно взять в работу? Ищут фронт У нас есть ряд задач по фронтенду, к которым…
  4. Jul 7, 2025я же думаю что все это бред полнейший и надо юзать yandex cloud. собственно скоро yaswami…
  5. Jul 7, 2025Для тех, кто не знает как обойти ограничения Cloudflare для своего приложения: Cloudflare…
  6. Jul 7, 2025@Scilef поделился статьей 👀
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →