标签: react-state

React - 状态挂钩图不是函数

我知道有类似的问题,但我无法找出错误发生的原因。Div 显示,但随后应用程序崩溃(好像是长度问题)

代码类似于我找到的示例,比如这个沙箱

我究竟做错了什么?

这是组件:

import React, { useState, useEffect } from 'react'
/* import Button from '../Button' */
import { getPlanets } from '../../services/index'
import './Planetas.css'


const Planetas = () => {

    const [planetas, setPlanetas] = useState([]);

    useEffect(() => {
        const fetchPlanetas = async () => {
            const planetas = await getPlanets()
            setPlanetas({ planetas })
        };    
        fetchPlanetas()
    }, []);


    return (
      <div className="planetas">
      {
        planetas.map((planeta, key) => {
            return <div key={key}>{planeta.name}</div>
        })
      }
      </div>
    )
}

export default …
Run Code Online (Sandbox Code Playgroud)

reactjs react-hooks react-state

4
推荐指数
1
解决办法
8201
查看次数

为多级状态对象反应 setState

我正在尝试更新包含多个级别的状态对象。请参阅此示例https://codesandbox.io/s/oq9kp9vy5y

问题是,render 方法中的值不会更新……只有第一个。我可以强制更新还是有更好的方法?

谢谢卡斯帕

setstate reactjs react-component react-state-management react-state

3
推荐指数
1
解决办法
1664
查看次数

跨组件 React 发送多个道具

我试图将两个变量从组件“游戏”发送到组件“应用程序”,但我不确定如何一次发送多个道具。

这是我所拥有的:

//App Component

class App extends Component {

  constructor(props) {
    super(props)
    this.state = {
      score: 0,
    }

    this.changeScore = this.changeScore.bind(this)
  }

  changeScore(newScore) {
    this.setState(prevState => ({
      score: prevState.score + newScore
    }))
  }

  render() {
    return(
      <div>
        <Game onClick={this.changeScore}/>
        <Score score={this.state.score}/>
      </div>
    )
  }
}
Run Code Online (Sandbox Code Playgroud)
//Game Componenet 

class Game extends Component {

    constructor(props) {
        super(props)
        this.state = {
            score: 0,
        }
        this.handleClick = this.handleClick.bind(this)
    }

    handleClick() {
        console.log('Clicked')
        this.props.onClick(this.state.score)

    }

    render() {
        return(
            <div>
                <button onClick={this.handleClick}> Score Button </button>
            </div> …
Run Code Online (Sandbox Code Playgroud)

javascript components reactjs react-props react-state

3
推荐指数
1
解决办法
7692
查看次数

当父组件的状态发生变化时,如何更新(重新渲染)React 中的子组件?

好的,我已经知道一种方法来做到这一点。但是,我问这个以防我重新发明轮子,因为我对 React 非常陌生。我的印象是,如果父组件通过 props 将她的状态传递给子组件而不是更新父组件的状态,那么子组件将在需要时重新渲染。但情况似乎并非如此。我设置了这个例子,

class Child extends Component {
  constructor(props) {
    super(props);
    this.state = {
      number: props.number,
    };
  }

  updateNumber(n) {
    this.setState({number: n});
  }

  render() {
    return (<h1>{this.state.number}</h1>);
  }
}

class Parent extends Component {

  constructor(props) {
    super(props);
    this.state = {
      number: -1,
    };
    this.child = React.createRef();
    setInterval(this.updateState.bind(this), 1000);
  }

  updateState() {
    console.log(this.state);
    this.setState({
      number: Math.floor((Math.random() * 10) + 1),
    });
    // this.child.current.updateNumber(this.state.number);
  }

  render() {
    return (
      <div>
        <Child ref={this.child} number={this.state.number}/>
      </div>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,除非我明确定义一个引用并使用它来调用子级的更新函数(注释部分),否则每次更新父级的状态时都不会重新渲染子级。所以是这样吗?如果他们的父母的状态作为道具传递给他们,你是否应该手动更新你的孩子的状态(heh)或者他们应该自动更新(并因此重新渲染)。

javascript reactjs react-props react-component react-state

3
推荐指数
2
解决办法
1万
查看次数

保持占位符反应选择

我已经尝试了我能想到的所有方法,但是display: none当为组件选择一个值时,我无法阻止 react-select 中的占位符消失(我假设更改为因为它不再在 HTML 中)。

我已经阅读了两篇有类似问题的帖子:https : //github.com/JedWatson/react-select/issues/2152 https://github.com/JedWatson/react-select/issues/2143

但没有发现任何成功

我在占位符元素上的样式是:

valueContainer: base => ({
        overflow: 'visible'
      }),
placeholder: (provided, state) => ({
        ...provided,
        position: "absolute",
        marginTop: '-30px',
        display: 
      state.isFocused || state.isSelected || state.selectProps.inputValue || state.value
      ? 'block'
      : 'block',
      }),

Run Code Online (Sandbox Code Playgroud)

这是一个堆栈闪电战。最终目标是在中心开始占位符并将其向上移动到焦点和选择的位置。问题是,一旦选择了某些内容,占位符就会消失。 https://stackblitz.com/edit/react-egf4va

javascript css reactjs react-select react-state

3
推荐指数
1
解决办法
4408
查看次数

为什么全局变量在 React 中执行两次

我是前端开发和学习 React 的新手。现在我正在尝试构建一个 hello-world 项目。

执行之后npx create-react-app myapp,我得到了一个初始的 React 项目,我只是在文件中编码App.js

import React, {useState} from 'react';

var counter = 0;

function App() {
  const [counter2, setCount] = useState(0);
  const increment = () => {
    setCount(counter2 + 1);
  };
  
  return(
    <div>
      <button onClick= {increment}>Increment</button>
      <h1>{counter++}</h1> // 1, 3, 5, 7... WHY???
      <h1>{counter2}</h1>  // 0, 1, 2, 3...
    </div>
  );
}

export default App;
Run Code Online (Sandbox Code Playgroud)

执行后npm start,我得到了我的索引页,它包含三个部分:一个按钮和两个数字。

令我惊讶的是,当我单击按钮时,counter2按预期增加,但counter增加了两倍。这意味着继续单击按钮会给我如下结果:

1 0, 3 1, …

reactjs react-state

3
推荐指数
1
解决办法
94
查看次数

ReactJS 使用动态键及其数据迭代状态数组

我有一个数组,如:

"data": {
    "key1": {
        "key_val1": "data1",
        "key_val2": "data2",
        "key_val3": "data3",
        "key_val4": "data4",

    },
    "key2": {
        "key_val1": "data1",
        "key_val2": "data2",
        "key_val3": "data3",
        "key_val4": "data4",

    },
    "key3": {
        "key_val1": "data1",
        "key_val2": "data2",
        "key_val3": "data3",
        "key_val4": "data4",

    }
}
Run Code Online (Sandbox Code Playgroud)

我想用这个数组迭代并填充我的表,但我收到错误this.state.data.map() is not a function

这是我的反应组件:

import React, { Component } from "react";
import $ from "jquery";
import axios from "axios";

class DataComponent extends Component {
  state = {
    data: [],
    isLoading: true
  };
  componentDidMount() {
    this.getData();
  }

  getData() {
    var …
Run Code Online (Sandbox Code Playgroud)

state reactjs react-state-management react-state

2
推荐指数
1
解决办法
6358
查看次数

在 ReactJS 中管理大量表单输入字段的专业方法是什么?

我的 React 应用程序在表单标签上有 20 多个字段。我的工作代码如下

function DriverForm() {
    const [formData1, setFormData1] = useState(1);
    const [formData2, setFormData2] = useState(2);
    const [formData3, setFormData3] = useState(3);
    const [formData4, setFormData4] = useState(4);
    const [formData5, setFormData5] = useState(5);

    const handleSubmit = (event) => {
        event.preventDefault();
    };

    return (
        <div className="wrapper">
            <form onSubmit={handleSubmit}>
                <input value={formData1} onChange={(e) => setFormData1(e.target.value)} />
                <input value={formData2} onChange={(e) => setFormData2(e.target.value)} />
                <input value={formData3} onChange={(e) => setFormData3(e.target.value)} />
                <input value={formData4} onChange={(e) => setFormData4(e.target.value)} />
                <input value={formData5} onChange={(e) => setFormData5(e.target.value)} />
                <button type="submit">Submit</button>
            </form> …
Run Code Online (Sandbox Code Playgroud)

reactjs react-state react-forms

2
推荐指数
1
解决办法
1224
查看次数

React 从显示错误的状态创建 JSX

在我的 React 应用程序中,在页面加载时,我调用 API 并将该值存储在状态中。当我尝试从状态创建 JSX 元素时,我收到错误Cannot read properties of undefined (reading 'expire')

const [domains, setDomains] = useState([]);
const [records, setRecords] = useState({});

useEffect(() => {
        axios.get('zones/domains').then((res) => {
            setDomains(res.data)
            axios.get('zones/records', {
                params: {
                    l_id: res.data[0].l_id
                }
            }).then((res) => {
                setRecords(res.data)
            });
        });
        
    }, [])


let table_str = <tr>
    <td>SOA</td>
    <td>{records.added.expire}</td>
    <td>{records.added.value1} {records.added.value2}</td>
</tr>
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-state

2
推荐指数
1
解决办法
65
查看次数

React-Native 为什么会出现“不可迭代”

React / State / Arrays 的新手。

为什么会出现“不可迭代”

  const myVar = {
    '2022-11-22': { selected: true, textColor: 'blue', activeOpacity: 0}
  };
 
  const [myMarkedDates, setMarkedDates] = useState(myVar);
 
  const newVar = {
    '2022-12-17': {selected: true, textColor: 'red', activeOpacity: 0}
  };
  
  const newVars = [newVar, ...myMarkedDates];
 
  setMarkedDates(newVars);

Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-state

2
推荐指数
1
解决办法
934
查看次数