Hel*_*rld 3 javascript reactjs
我使用 React.js 构建我的水疗应用程序。我使用函数式风格来制作我的组件。随着业务逻辑越来越大,功能必然会越来越多。所以我尝试分成多个组件。因为即使只是一个组件,也很难将许多代码放在一个文件中。
然而,这也有明显的局限性。在复杂组件的情况下,除了用户直接调用的函数之外,还存在大量的事件回调函数。根据组件的大小,有时很难将所有逻辑都写在一个jsx文件中,所以我想根据需要将代码分成不同的文件。(就像c#部分类一样)
然而,这并不容易。举个例子,我们假设回调函数是其他文件的外部函数,并导入到该组件的 jsx 文件中并使用。但似乎组件状态、道具信息和调度函数也应该作为参数传递给函数。这看起来很麻烦,但除此之外,我不知道如何从另一个文件中的函数访问该组件的状态、道具、调度函数。)
//For example of callback function
const onHoldButtonClicked = (state, props, dispatch, event) =>
{
    ~~~
}
//For example of normal function
const updateValidUser = (state, props, dispatch, userInfo, data) =>
{
    let id = userInfo.id;
    if(id == data.passID)
    {
         if(props.valid == 10)
            dispatch({action: 'ChangeUser', user: id});
    }
}
Run Code Online (Sandbox Code Playgroud)
在React中,当一个组件中的逻辑变大时,如何划分逻辑(函数)?(一般情况)即使分成几个组件,一个大组件也必然有很多功能。
我建议将逻辑提取到钩子中,并将这些钩子放入它们自己的文件中。
钩子.js
const useAwesomeHook = () => {
  const [someState, setSomeState] = useState("default");
  const myCoolFunction = useCallback(() => {
    console.log('do smth cool', someState);
  }, [someState]);
  return myCoolFunction;
};
export default useAwesomeHook;
Run Code Online (Sandbox Code Playgroud)
main.js
import useAwesomeHook from './hook';
const Main = ({ someProperty }) => {
  const myCoolFunction = useAwesomeHook(someProperty);
  return <button onClick={myCoolFunction}>Click me</button>;
};
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           10450 次  |  
        
|   最近记录:  |