reactjs 我有一个问题,与react useState和rendering!当我得到一个由参数传递的值,以设置在useState已声明为默认值

jaxagkaj  于 2022-12-26  发布在  React
关注(0)|答案(2)|浏览(106)

当我得到一个参数传递的值设置在useState已经声明了默认值第一它呈现与以前的(默认)值,然后呈现与新的值,我在参数传递..是有一种可能的方式来呈现后,才收到新的值!?如果我不清楚描述我的问题,请不要犹豫,问我更多的细节..提前感谢.
尝试使用新值设置useState,预期组件在收到新值后呈现,但未使用默认值。

yjghlzjz

yjghlzjz1#

如果你能提供一个代码片段,可以帮助。
您可以提供具有如下初始状态的子组件:

const ParentComponent = () => {
  const [initialValue, setInitialValue] = useState("Initial value")

  return <ChildComponent key={initialValue} initialValue={initialValue} />
}

const ChildComponent = ({ initialValue }) => {
  const [inputValue, setInputValue] = useState(initialValue)

  return <input value={inputValue} onChange={handleChange} />
}

子组件的key属性将强制在每次initialValue更改时创建一个新示例,这也应该只使用您传递给它的状态来呈现组件。
这对于小型组件是有效的,但是如果您正在子组件中获取数据或处理复杂的逻辑,那么您肯定应该在子组件中处理状态。
例如,如果状态为null,则也不能通过在返回部分中使用三元运算来呈现组件:

// ...

return initialValue ? (
  <input value={inputValue} onChange={handleChange} />
) : null

// ...
yrdbyhpb

yrdbyhpb2#

请使用以下呈现逻辑

class TestComponent extends React.Component
{

render(){
    const {data}=this.props;

    return(<Fragment>
        {(data?<div>{data.id}</div>:null)}
    </Fragment>);
   }
}

相关问题