react native – ¿Cómo puedo evitar el Alert si ya guardé los cambios?, utilizando navigation.addListener(‘beforeRemove’

Necesitaría adaptar el siguiente código obtenido de React Navigation Docs (Snack), para evitar el Alert si ya he “guardado los cambios” antes de intentar regresar a la página anterior (por ejemplo si ya los he guardado a través de un botón, utilizando AsyncStorage.setItem). El código sólo detecta cambios en el campo text y mas allá de haber guardado o no previamente dichos cambios, siempre genera el Alert cuando se pretende regresar.

import * as React from 'react';
import { Alert, View, TextInput, StyleSheet } from 'react-native';
import { Button } from 'react-native-paper';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';

const EditTextScreen = ({ navigation }) => {
  const (text, setText) = React.useState('');

  const hasUnsavedChanges = Boolean(text);

  React.useEffect(
    () =>
      navigation.addListener('beforeRemove', (e) => {
        const action = e.data.action;
        if (!hasUnsavedChanges) {
          return;
        }

        e.preventDefault();

        Alert.alert(
          'Discard changes?',
          'You have unsaved changes. Are you sure to discard them and leave the screen?',
          (
            { text: "Don't leave", style: 'cancel', onPress: () => {} },
            {
              text: 'Discard',
              style: 'destructive',
              onPress: () => navigation.dispatch(action),
            },
          )
        );
      }),
    (hasUnsavedChanges, navigation)
  );

  return (
    <View style={styles.content}>
      <TextInput
        autoFocus
        style={styles.input}
        value={text}
        placeholder="Type something…"
        onChangeText={setText}
      />
    </View>
  );
};

const HomeScreen = ({ navigation }) => {
  return (
    <View style={styles.buttons}>
      <Button
        mode="contained"
        onPress={() => navigation.push('EditText')}
        style={styles.button}
      >
        Push EditText
      </Button>
    </View>
  );
};

const Stack = createStackNavigator();

export default function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator>
        <Stack.Screen name="Home" component={HomeScreen} />
        <Stack.Screen name="EditText" component={EditTextScreen} />
      </Stack.Navigator>
    </NavigationContainer>
  );
}

const styles = StyleSheet.create({
  content: {
    flex: 1,
    padding: 16,
  },
  input: {
    margin: 8,
    padding: 10,
    borderRadius: 3,
    borderWidth: StyleSheet.hairlineWidth,
    borderColor: 'rgba(0, 0, 0, 0.08)',
    backgroundColor: 'white',
  },
  buttons: {
    flex: 1,
    justifyContent: 'center',
    padding: 8,
  },
  button: {
    margin: 8,
  },
});

Tal vez haya otro modo de hacerlo. Agradezco cualquier ayuda.

La idea es implementarlo en una App (sin Expo).

raspbian – porque no puedo hacer conexion por duckdns a mi raspberry

tengo un raspberry pi 4, en el cual estoy tratando de configurar para ingresar a ella por desde fuera de mi red local, tengo instalado lo siguiente:

  • Raspbian
  • OpenMediaVault
  • Portainer
  • en portainer duckdns desde stack

puedo acceder al portal de OMV desde mi ip local, pero si ingreso la publica no entra, el stack de duckdns funciona bien, no muestra errores en el log, pero tampoco puedo ingresar a travez del subdomino que da duckdns, ya abri puertos en el firewall de mi modem 80, 433, 22 y aun asi sigo sin lograr la conexión desde internet hacia mi raspberry, ¿alguna sugerencia?, muchas gracias por adelantado, saludos.

html – ¿Cómo puedo usar un textarea dentro de un echo php?

Estoy aprendiendo php y soy bastante novato por lo cual si me dan una mano se los agradecería, estuve tratando que en ves de input sea textarea, pero me genera error en el navegador.

<?php 
  echo "<input type='text' id='post_tags' 
   placeholder='".esc_html__('Agregar', 'clasi')."' 
   name='post_tags' value='";
    $posttags = get_the_tags($current_post);
    if ($posttags) {
        foreach($posttags as $tag) {
         $tags_list = $tag->name . ', ';
         echo esc_html($tags_list);
        }
    }
    echo "' size='' maxlength='' class='form-control form-control-md'>";?>

Como puedo mostrar eventos en un calendario con Kotlin y Android studio, que al momento de presionar ese evento me muestre un mensaje?


Tu privacidad


Presionando “Aceptar todas las cookies”, aceptas que Stack Exchange puede guardar cookies en tu dispositivo y mostrar información de acuerdo a nuestra política de cookies.




pip – No puedo ejecutar cv2 en python

Al momento de ejecutar cv2 con import cv2 me aparece lo siguiente:
ModuleNotFoundError: No module named ‘cv2’
Cuando me voy a pip desde cmd e instalo todo lo necesario para ejecutar cv2 me sale:

Requirement already satisfied: opencv-contrib-python in  
c:userscambappdatalocalpackagespythonsoftwarefoundation.python.3.9_qbz 
5n2kfra8p0localcachelocal-packagespython39site-packages (4.5.2.54)

Ya la verdad se me están agotando los recursos necesito ayuda pronto 🙁
introducir la descripción de la imagen aquí

git – ¿Cómo puedo eliminar una carpeta desde la pagina de GitHub o desde la terminal?

Necesito su ayuda.

¿Cómo puedo eliminar una carpeta desde la pagina de GitHub o desde la terminal?

Subí una carpeta desde la pagina de git hub (se llama img) en la seccion donde dice Add file, despues le puse donde dice Upload files arrastre la carpeta y le puse Commit changes.

introducir la descripción de la imagen aquí

Quedo así, pero me arremetí y ahora decesito borrar esa carpeta del repositorio, como le hago?

Para que ya solo quede el archivo README.md

asp.net – ¿Cómo puedo aprender desarrollo web con visual studio?

me considero una principiante en programación y anteriormente sólo he utilizado visual studio para aplicaciones de escritorio pero me encantaría aprender a usarlo para desarrollo web. Me metí a indagar en los cursos gratuitos que tiene microsoft learn sobre ASP.net y net, pero el problema es que siento que está un poco desordenado, no sé por dónde empezar y en uno de los minicursos mesclaron visual code con visual studio lo que me confundió un poco, la verdad ando muy pérdida. Entonces… ¿Alguien sabe algún curso gratuito o por dónde podría empezar para aprender a utilizar ASP.net y net?, aunque aun tengo muy claro la diferencia…Realmente me gustaría aprender aprender a programar páginas web y aprender sobre webservices.
De antemano gracias por la ayuda y por favor no cierren mi pregunta, realmente quiero aprender a programar!

Como Puedo Hacer un Select Distinc “Laravel y Liveware”

Tengo dos select los cuales se almacén dentro de una tabla relacionada llamada categoryareas

Tablas van de la siguiente forma

Tabla categories

+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name       | varchar(255)     | NO   | UNI | NULL    |                |
| created_at | timestamp        | YES  |     | NULL    |                |
| updated_at | timestamp        | YES  |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+

Tabla areas

+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name       | varchar(255)     | NO   | UNI | NULL    |                |
| code       | int(11)          | NO   | UNI | NULL    |                |
| created_at | timestamp        | YES  |     | NULL    |                |
| updated_at | timestamp        | YES  |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+

Tabla categoryareas

+--------------+------------------+------+-----+---------+----------------+
| Field        | Type             | Null | Key | Default | Extra          |
+--------------+------------------+------+-----+---------+----------------+
| id           | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| id_category  | int(10) unsigned | YES  | MUL | NULL    |                |
| id_area      | int(10) unsigned | YES  | MUL | NULL    |                |
| ANS_Cat      | int(11)          | YES  |     | NULL    |                |
| Duration_Cat | int(11)          | YES  |     | NULL    |                |
| description  | varchar(255)     | YES  |     | NULL    |                |
| created_at   | timestamp        | YES  |     | NULL    |                |
| updated_at   | timestamp        | YES  |     | NULL    |                |
+--------------+------------------+------+-----+---------+----------------+

En la tabla categoryareas tengo estos valres los cuale son llaves foráneas

+-------------+---------+
| id_category | id_area |
+-------------+---------+
|           1 |       1 |
|           1 |       2 |
|           1 |       3 |
|           2 |       1 |
+-------------+---------+

Lo que quiero hacer es lo siguiente:

Que cuando seleccione una categoría y ya exista una relacion con un area, no quiero mostrar esa area ya seleccionada anteriormete

(1,2,3,4) Tabla category
(1,2,3,4) Tabla area

Quieres que si selecciona categoria(1) y el area(1), en en siguiente, al seleccionar categoria(1) no muestre el area(1) ya que existe esa relacion

Este es mi controlador con liveware

    public $selecteArea = null, $selecteCategory = null;
    public $areas, $categories, $ANS_Cat = null, $Duration_Cat = null;
    public $open_create = false;
    
    public function render()
    {
        return view('livewire.categoryarea.create-category-area');
    }

    public function mount()
    {
        $this->areas = Area::all();
        $this->categories = Category::all();       
    }

    public function cerrar(){
        $this->reset(('open_create', 'selecteArea', 'selecteCategory', 'ANS_Cat', 'Duration_Cat'));
        $this->open_create = false;
    }

    function rules() {
        return (

        'selecteArea' => 'required',
        'selecteCategory' => 'required',
        'ANS_Cat' => '',
        'Duration_Cat' => ''
        );
    }

    public function updated($propertyName)
    {
        $this->validateOnly($propertyName);
    }

    protected $messages = (
        'selecteArea.required' => 'Selecione una Area',
        'selecteArea.required' => 'Selecione una Categoria',
    );

    public function save(){

        $this->validate();

        categoryarea::create((
            'id_area'=> intVal($this->selecteArea),
            'id_category'=> intVal($this->selecteCategory),
            'ANS_Cat' => $this->ANS_Cat,
            'Duration_Cat' => $this->Duration_Cat,
        ));
        
        $this->reset(('open_create', 'selecteArea', 'selecteCategory', 'ANS_Cat', 'Duration_Cat'));
        $this->emitTO( 'categoryarea.livetypecategory-area-table','render');
        $this->emit('alert', 'Relacion categorya por area creado sastifactoriamente');
    }

y esta es vista

            <div class="row row-sm">
                <div class="col-lg">
                    <div class="input-icon">
                        <span class="input-icon-addon">
                            <i class="fas fa-clone"></i>
                        </span>
                        <select class="form-control" wire:model="selecteCategory">
                            <option value="">{{ __('Select Area') }} *</option>
                            @foreach ($categories as $category)
                                <option value="{{ $category->id }}">{{ $category->name }}</option>
                            @endforeach
                        </select>
                    </div>
                    <x-jet-input-error for="selecteCategory" />
                </div>
            </div>
            <br>
            <div class="row row-sm">
                <div class="col-lg">
                    <div class="input-icon">
                        <span class="input-icon-addon">
                            <i class="fas fa-clone"></i>
                        </span>
                        <select class="form-control" wire:model="selecteArea">
                            <option value="">{{ __('Select Area') }} *</option>
                            @foreach ($areas as $area)
                                <option value="{{ $area->id }}">{{ $area->name }}</option>
                            @endforeach
                        </select>
                    </div>
                    <x-jet-input-error for="selecteArea" />
                </div>
            </div>

Pero no se como realizar ese proeceso..
Gracias ante mano por la ayuda que me puedan brindar

mysql – PHP como puedo saber si comando DELETE borro el registro?

tengo que saber si el comando delate borro el registro que le mande a borrar

$dato = $_POST(‘NOM’);
$resultado = mysqli_query ($conexion, “DELETE FROM alumnos WHERE nombre=’$dato’ “)

se que el comando me funciona pero necesito saber si el dato que menda se borro

como puedo saber si se borro algo o no

por que si le envió un dato que no existe el la tabal no va hacer nada

quiero saber como saber cuando pasa eso

Problama

Confeccionar un programa que permita ingresar el nombre de un curso por teclado y posteriormente efectúe el borrado de dicho registro en la tabla cursos. Mostrar un mensaje si no existe el curso.

la parte de saber si no existe el curso es la que no se