Cuando intento agregar al comienzo de una matriz en React Native, aparece el siguiente error:
TypeError: todos.unshift is not a function. (In 'todos.unshift(newTodo)', 'todos.unshift' is undefined)Mi código es:
export default function App() { const [todos, setTodos] = useState(['Hello']); const [todo, setTodo] = useState(''); function addItem(newTodo) { console.log(newTodo); setTodos(todos.unshift(newTodo)); } return ( <TouchableWithoutFeedback onPress={() => { Keyboard.dismiss(); }} > <View style={styles.container}> <TextInput placeholder='new todo' style={styles.input} value={todo} onChangeText={(text) => { setTodo(text); }} ></TextInput> <Button title='Add' onPress={()=>addItem(todo)}></Button> </View> </TouchableWithoutFeedback> ); }Por qué está pasando esto . ¿useState no aplica el tipo de todos como una matriz?
también puede probar esto ya que el método de matriz 'unshift' no devuelve una matriz modificada.
Primero clone el estado usando el operador de propagación y luego actualice el estado.
function addItem(newTodo) { let arrayToUpdate = [...todos]; arrayToUpdate.unshift(newTodo); setTodos(arrayToUpdate); }