使用React Hooks和MapBox更新状态并从API onClick提取

时间:2019-12-04 18:27:13

标签: reactjs react-hooks react-map-gl

当单击地图区域时,尝试使用经度和纬度从API提取时,我遇到问题。初始地图加载很好,API中的数据按预期显示,并且我可以确认geoLoc数组状态正在更新onClick,因为控制台日志显示了这一点。但是,由于某些原因,即使geoLoc.latitude和geoLoc.longitude的状态都在更改,API也不会更新。有什么理由吗?任何帮助将非常感激!谢谢

using System;

using Xamarin.Forms;
using XPerfilEMenu.Tarefas;

namespace XPerfilEMenu.Tarefas
{
    public partial class Cadastro : ContentPage
    {


        private string Prioridade { get; set; }
        public byte PrioridadeFinal { get; set; }
        public Cadastro()
        {
            InitializeComponent();
        }

        public void PrioridadeEscolhida(object sender, EventArgs args)
        {
            //Primeiro localiza todas labels com base no slprioridades e vamos fazer com que todas forcem para cor cinza e depois faz apenas o elemento clicado fique escuro
            var Stacks = SLPrioridades.Children;
            foreach(var Linha in Stacks)
            {
                Label LabelPrioridade = ((StackLayout)Linha).Children[1] as Label;
                LabelPrioridade.TextColor = Color.Gray;
            }


            //Agora vamos transformar o que foi clicado em preto
            ((Label)((StackLayout)sender).Children[1]).TextColor = Color.Black;


            //Capturando qual foi a prioridade clicada com base no nome da imagem.
            FileImageSource Source = ((Image)((StackLayout)sender).Children[0]).Source as FileImageSource;
            //Para obter o nome do elemento clicado, se usa:

            Prioridade = Source.File.ToString().Replace(".png", "");

        }


        //Salvando novo evento
        public void AdicionarTarefa(object sender, EventArgs args)
        {

            bool ErroExiste = false;

            //Verificando se os dois campos estão preenchidos. Para strings, verificando se o tamanho é maior que 0:
            if (!(TarefaDigitada.Text.Trim().Length > 0))
            {
                ErroExiste = true;
                DisplayAlert("Erro", "Tarefa não digitada", "Okay");
            }

            //Já, para a prioridade, 

            if (!(Prioridade.Trim().Length > 0))
            {
                ErroExiste = true;
                DisplayAlert("Erro", "Prioridade não escolhida", "Okay");
            }

            //Se o bool ErroExiste chegar até o final como falsa, a tarefa será salva.
            if (ErroExiste == false)
            {
                PostsAFazer postsAFazer = new PostsAFazer();
                postsAFazer.Nome = TarefaDigitada.Text.Trim();
                postsAFazer.Prioridade = byte.Parse(Prioridade);

                new GerenciadorPostagens().Salvar(postsAFazer);

                //Para confirmar, fazemos o campo de digitar a tarefa para mostrar quantos elementos temos na lista
                TarefaDigitada.Text = new GerenciadorPostagens().Listagem().Count.ToString();
            }
        }

    }
}

0 个答案:

没有答案