DocumentatieCommerceVideo's en tutorials

Ontdek het doel van de web-src omslag

Laatst bijgewerkt: 15 juli 2024
  • Onderwerpen:
  • API Mesh
  • App Builder
  • Uitbreidbaarheid
  • Backend-ontwikkeling

Gemaakt voor:

  • Beginner
  • tussenpersoon
  • Ontwikkelaar

De map web-src voor deze voorbeeldapp bevat veel JavaScript-bestanden en -mappen. Deze map wordt gebruikt voor toepassingen met een gebruikersinterface. Deze functie wordt niet door alle toepassingen gebruikt. Een Commerce-integratie met een extern voorraadbeheersysteem vereist bijvoorbeeld mogelijk geen frontend interface en code.

Voor wie is deze video?

  • Ontwikkelaars die nog geen ervaring hebben met Adobe Commerce, gebruiken Adobe App Builder en leren meer over de map web-src en de inhoud ervan.

Video-inhoud

  • Wat is het belangrijkste doel voor de web-src omslag?
  • Meestal opgenomen bestanden en mappen
  • De manier waarop de map web-src en de inhoud daarin worden gebruikt in de voorbeeldtoepassing

https://video.tv.adobe.com/v/3416665?quality=12&learn=on

Codevoorbeelden

web-src/src/components/Orders.js

/*
 * Copyright 2023 Adobe
 * All Rights Reserved.
 *
 * NOTICE: All information contained herein is, and remains
 * the property of Adobe and its suppliers, if any. The intellectual
 * and technical concepts contained herein are proprietary to Adobe
 * and its suppliers and are protected by all applicable intellectual
 * property laws, including trade secret and copyright laws.
 * Dissemination of this information or reproduction of this material
 * is strictly forbidden unless prior written permission is obtained
 * from Adobe.
 */
import {
    Content,
    Heading,
    IllustratedMessage,
    TableView,
    TableHeader,
    TableBody,
    Column,
    Row,
    Cell,
    View,
    Flex,
    ProgressCircle
} from '@adobe/react-spectrum'
import {useCommerceOrders} from '../hooks/useCommerceOrders'

export const Orders = props => {

    const {isLoadingCommerceOrders, commerceOrders} = useCommerceOrders(props)

    const ordersColumns = [
        {name: 'Order Id', uid: 'increment_id'},
        {name: 'Status', uid: 'status'},
        {name: 'Store Name', uid: 'store_name'},
        {name: 'Total Item Count', uid: 'total_item_count'},
        {name: 'Total Quantity', uid: 'total_qty_ordered'},
        {name: 'Total Due', uid: 'total_due'},
        {name: 'Tax', uid: 'tax_amount'},
        {name: 'Created At', uid: 'created_at'}
    ]

    function renderEmptyState() {
        return (
            <IllustratedMessage>
                <Content>No data available</Content>
            </IllustratedMessage>
        )
    }

    return (

        <View>
            {isLoadingCommerceOrders ? (
                <Flex alignItems="center" justifyContent="center" height="100vh">
                    <ProgressCircle size="L" aria-label="Loading…" isIndeterminate/>
                </Flex>
            ) : (
                <View margin={10}>
                    <Heading level={1}>Fetched orders from Adobe Commerce</Heading>
                    <TableView
                        overflowMode="wrap"
                        aria-label="orders table"
                        flex
                        renderEmptyState={renderEmptyState}
                        height="static-size-1000"
                    >
                        <TableHeader columns={ordersColumns}>
                            {column => <Column key={column.uid}>{column.name}</Column>}
                        </TableHeader>
                        <TableBody items={commerceOrders}>
                            {order => (
                                <Row key={order['increment_id']}>{columnKey => <Cell>{order[columnKey]}</Cell>}</Row>
                            )}
                        </TableBody>
                    </TableView>
                </View>
            )}
        </View>
    )
}

web-src/src/hooks/useCommerceOrders.js

CAUTION
Wanneer het uitvoeren van API vraag, zorg ervoor dat één of andere soort searchCriteria wordt gebruikt. U zou ook het gebruiken van paginering kunnen overwegen. Als het resultaat van Adobe Commerce te groot is, is mogelijk aan de Adobe Developer App Builder-capaciteit voldaan en wordt het bestand onverwacht afgesloten. Het resultaat is een onjuist resultaat van de reactie als een fout van 400.
Stel dat het nodig is om alle huidige producten van Adobe Commerce op te vragen. De resulterende URL lijkt op {{base_url}}rest/V1/products?searchCriteria=all . Afhankelijk van de grootte van de catalogus die de geretourneerde pagina bevat, is de json mogelijk te groot om door App Builder te worden gebruikt. Gebruik in plaats daarvan paginering en doe een aantal verzoeken om te voorkomen dat Response is not valid 'message/http'.

In het onderstaande voorbeeld beperkt het codevoorbeeld not de aanvraag. Als u een fout van 400 wilt voorkomen, verkleint u de grootte van de reactie met searchCriteria .

?searchCriteria[filter_groups][0][filters][0][field]=created_at&searchCriteria[filter_groups][0][filters][0][value]=2022-12-01&searchCriteria[filter_groups][0][filters][0][condition_type]=gt

/*
 * Copyright 2023 Adobe
 * All Rights Reserved.
 *
 * NOTICE: All information contained herein is, and remains
 * the property of Adobe and its suppliers, if any. The intellectual
 * and technical concepts contained herein are proprietary to Adobe
 * and its suppliers and are protected by all applicable intellectual
 * property laws, including trade secret and copyright laws.
 * Dissemination of this information or reproduction of this material
 * is strictly forbidden unless prior written permission is obtained
 * from Adobe.
 */
import { useEffect, useState } from 'react'
import { callAction } from '../utils'

export const useCommerceOrders = props => {
    const [isLoadingCommerceOrders, setIsLoadingCommerceOrders] = useState(true)
    const [commerceOrders, setCommerceOrders] = useState([])

    const fetchCommerceOrders = async () => {
        const commerceOrdersResponse = await callAction(
            props,
            'commerce-rest-get',
            'orders?searchCriteria=all'
        )
        setCommerceOrders(commerceOrdersResponse.error ? [] : commerceOrdersResponse.items)
    }

    useEffect(() => {
        fetchCommerceOrders().then(() => setIsLoadingCommerceOrders(false))
    }, [])

    return { isLoadingCommerceOrders, commerceOrders }
}

App Builder - Uw eerste App-gerelateerde pagina's maken

  • Overzicht
  • De
  • De
  • "acties"
  • "test"
  • "web-src"
  • Lokaal testen
  • Testen met App Builder URL
  • Conclusie
  • Bron code van de Module van de Steekproef
recommendation-more-help
3a5f7e19-f383-4af8-8983-d01154c1402f