1. Agora, nós iremos fazer a estrutura do form, que nesse caso, por nós termos uma imagem que é selecionada de uma forma diferente e também os nossos dropdowns, vamos estar criando de forma diferente os fields

  2. Agora nós iremos criar os fields, incluindo também de imagens, categoria e endereço, pois nós iremos setar também para o nosso form

    const [fields, setFields] = useState({
      title: "",
      price: "",
      description: "",
      images: [{}],
      categorie: "",
      addressId: "",
    });
    
  3. E agora iremos criar um useEffect para setar o field quando algum dos nossos 3 que não estão dentro do field mudar.

    const AddProduct = () => {
      const [fields, setFields] = useState({
        title: "",
        price: "",
        description: "",
        images: [{}],
        categorie: "",
        addressId: "",
      });
    
      const [categorie, setCategorie] = useState("");
      const [address, setAddress] = useState("");
    	const [addressId, setAddress] = useState("");
      const [images, setImages] = useState<ImagePickerAsset[]>([]);
    
      const handleSubmitProduct = () => {
        console.log(fields);
      };
    
      useEffect(() => {
        setFields({
          ...fields,
          images: images,
          categorie: categorie,
          addressId: addressId,
        });
      }, [images, categorie, addressId]);
    
      return (
    
  4. Agora a gente pode fazer o onChangeText dos inputs e também colocar o handle no nosso botão

    return (
      <Container contentContainerStyle={{ paddingBottom: 120 }}>
        <DefaultTitle title="CADASTRO DO ANÚNCIO" fontSize={18} />
    
        <InputContainer>
          <Input
            placeholder="Título"
            onChangeText={(val) => {
              setFields({
                ...fields,
                title: val,
              });
            }}
          />
        </InputContainer>
    
        <InputContainer>
          <Input
            placeholder="Preço"
            onChangeText={(val) => {
              setFields({
                ...fields,
                price: val,
              });
            }}
            keyboardType="numeric"
          />
        </InputContainer>
    
        <DescriptionContainer>
          <Input
            placeholder="Descrição"
            onChangeText={(val) => {
              setFields({
                ...fields,
                description: val,
              });
            }}
          />
        </DescriptionContainer>
    
        <UploadImage images={images} setImages={setImages} />
    
        <DropDownComponent
          data={Categorie}
          placeholder="Selecione a categoria"
          setSelected={setCategorie}
        />
    
        <DropDownComponent
          data={Address}
          placeholder="Selecione o endereço"
          setSelected={setAddress}
        />
    
        <DefaultButton
          buttonText="CADASTRAR E PUBLICAR"
          buttonHandle={handleSubmitProduct}
          buttonType="primary"
          marginVertical={20}
        />
    
        <Division>ou</Division>
    
        <DefaultButton
          buttonText="SALVAR COMO RASCUNHO"
          buttonHandle={handleSubmitProduct}
          buttonType="secondary"
          marginVertical={20}
        />
      </Container>
    );
    
  5. Ao selecionar as informações, a gente vai ter o resultado quando clicarmos no botão dentro do console com elas preenchidas. E dessa forma ficará mais fácil de enviar para o backend.

  6. Nós iremos antes trocar o categoryData que temos aqui por outro, que terá as categorias fixas do nosso app, pois o backend peça que a gente envie uma válida para já deixar salvo corretamente. Iremos aproveitar para consertar, chamando de “category”, com “y”

    const Category = [
      { value: "Eletrônicos" },
      { value: "Eletrodomésticos" },
      { value: "Moda e Acessórios" },
      { value: "Pets" },
      { value: "Brinquedos e Jogos" },
      { value: "Casa e Jardim" },
      { value: "Esporte e Lazer" },
      { value: "Automóveis e Veículos" },
    ];