相关疑难解决方法(0)

使用es6类时,React中的"super()"和"super(props)"有什么区别?

何时重要的propssuper(),为什么?

class MyComponent extends React.Component {
  constructor(props) {
    super(); // or super(props) ?
  }
}
Run Code Online (Sandbox Code Playgroud)

ecmascript-6 reactjs

493
推荐指数
10
解决办法
18万
查看次数

在渲染道具中调用的 setState 导致反应警告

我有以下组件,它接受一个渲染道具,它将值传递给子组件。 是一个显示问题的代码沙盒。按提交并查看控制台。

这是组件:

export const FormContainer = function FormContainer<V>({
  initialValues,
  validate,
  render,
  ...rest
}: FormContainerProps<V>) {
  const [hasValidationError, setHasValidationError] = useState(false);
  const dispatch = useDispatch();

  useEffect(() => {
    if (!hasValidationError) {
      return;
    }

    scrollToValidationError();

    () => setHasValidationError(false);
  }, [hasValidationError]);

  return (
    <>
      <Formik
      >
        {({
          isSubmitting,
          submitCount,
          isValid,
          errors,
          values,
        }: FormikProps<V>) => {
          const invalid = !isValid;
          const submitted = submitCount > 0;

          if (submitCount > 0 && invalid) {
            setHasValidationError(true);
          }

          return (
            <>
              <Form>
                  <div className={styles.form}> …
Run Code Online (Sandbox Code Playgroud)

reactjs

7
推荐指数
1
解决办法
1860
查看次数

useLayoutEffect + useState与useMemo的用例

我已经看到了这个答案:useMemo vs. useEffect + useState,它总结起来很不错useEffect,但就我而言,我想执行一个昂贵的操作,该操作将尽早更改DOM。将useMemo()仍然被代替的建议useLayoutEffect()与状态更新?效果的双重渲染->状态更新会否提高性能?

编辑

useLayoutEffect() 场景:

useLayoutEffect(() => {
    const tokens = expensiveOperationGeneratingClasses(param1)
    setTokens(tokens)
}, 
[param1])

 render (
  <>
   {
       tokens.map(token => <span className={token.id}/>)
   }
  </>
 )

Run Code Online (Sandbox Code Playgroud)

useMemo 场景:

const tokens = useMemo(() => {
     return expensiveOperationGeneratingClasses(param1)
},
[param1]

 render (
  <>
   {
       tokens.map(token => <span className={token.id}/>)
   }
  </>
 )
Run Code Online (Sandbox Code Playgroud)

实际上,我意识到我不是在进行DOM操作,而是在呈现<span>标记之前生成类名以避免闪烁,所以我认为我最好使用useMemo,对吗?

reactjs react-hooks

6
推荐指数
1
解决办法
401
查看次数

如何设置传递给反应组件的道具的状态?

我有这个简单的组件,将initialPlayersprops传递给App组件.

import React from 'react';
import ReactDOM from 'react-dom';

var PLAYERS = [
  {
    name: "xyz",
    score: 123
  }
];

// App component
class App extends React.Component {

 constructor() {
   super();
 }

 componentDidMount() {
   this.state = {
     players: this.props.initialPlayers
   }
 }

 render() {    
   return(
     <div>
       <Header players={this.state.players} />
     </div>
   );
 }
}

// Render component
ReactDOM.render(<App initialPlayers={ PLAYERS }/>, 
document.getElementById('root'));
Run Code Online (Sandbox Code Playgroud)

在控制台中出现此错误,并且无法将值传递给Header组件{this.state.players}.任何的想法?.

Uncaught TypeError: Cannot read property 'players' of null
at App.render (bundle.js:14379) …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

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

在react hook上使用props值不好吗?

我是React钩子的新手,但我在文档中看不到这一点:

const MyComponent = ({myProp}) => {
 const [myPropHook, setPropHook] = useState(myProp)
...
}
Run Code Online (Sandbox Code Playgroud)

我想知道这是否是一个好习惯?

javascript reactjs

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

标签 统计

reactjs ×5

javascript ×2

ecmascript-6 ×1

react-hooks ×1