Ontdek het doel van de web-src omslag web-src-folder

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?

  • Voor nieuwe Adobe Commerce-ontwikkelaars met beperkte ervaring die Adobe App Builder gebruiken en die meer weten 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

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

recommendation-more-help
3a5f7e19-f383-4af8-8983-d01154c1402f