小编lwi*_*win的帖子

无效的钩子调用。Hooks 只能在函数组件内部调用

我是 React 的新手,现在我想在表中显示一些记录,现在我收到了这个错误。请帮帮我。

无效的钩子调用。钩子只能在函数组件的主体内部调用。这可能是由于以下原因之一而发生的: 1. 你可能有不匹配的 React 版本和渲染器(例如 React DOM) 2. 你可能违反了 Hooks 规则 3. 你可能有多个 React 副本有关如何调试和解决此问题的提示,请参阅相同的应用程序。

import React,{Component} from 'react';
import { makeStyles } from '@material-ui/core/styles';
import Table from '@material-ui/core/Table';
import TableBody from '@material-ui/core/TableBody';
import TableCell from '@material-ui/core/TableCell';
import TableHead from '@material-ui/core/TableHead';
import TableRow from '@material-ui/core/TableRow';
import Paper from '@material-ui/core/Paper';

const useStyles = makeStyles(theme => ({
    root: {
      width: '100%',
      marginTop: theme.spacing(3),
      overflowX: 'auto',
    },
    table: {
      minWidth: 650,
    },
  }));

class allowance extends Component{
    constructor(){
        super();
        this.state={ …
Run Code Online (Sandbox Code Playgroud)

reactjs material-ui react-hooks

130
推荐指数
12
解决办法
29万
查看次数

缺少 1 个必需的位置参数:'pk'

我是 Django 的新手并做出反应。上周我已经遇到了这个错误,那次是请求 URL 错误。昨天我改变了后端设计,现在它的错误再次发生。

这是我的网址=>

urlpatterns = [
    url(r'^allowances_mas/', AllowanceAPIView.as_view()),
    url(r'^allowances_mas/(?P<pk>\d+)/$', AllowanceAPIView.as_view()),....
Run Code Online (Sandbox Code Playgroud)

这是我的内部视图放置方法,

def put(self,request,pk):
        save_allowance = get_object_or_404(Allowance.objects.all(),pk=pk)
        data = request.data.get('allowance')
        serializer = AllowanceSerializer(instance=save_allowance,data=data,partial=True)

        if serializer.is_valid():           
            allowance_saved=serializer.save()
            return Response({"success":"Allowance '{}' updated successfully".format(allowance_saved.AllowID)})
        else:
            return Response({"fail":"'{}'".format(serializer.errors)})  
Run Code Online (Sandbox Code Playgroud)

这是来自 React axios 的 url 请求 =>

  axios.put('http://127.0.0.1:8000/api/allowances_mas/1/', { allowance },{
        headers: {
          'Content-Type': 'application/json'
        }
      })
        .then(res => {
          axios.get('http://127.0.0.1:8000/api/allowances_mas/')
          .then(res=>{
            const resallowance=res.data.allowance;  

            this.setState({
              allowances:resallowance 
            });
          })      
        })
        .catch(err=>{
          console.log("error",err);
        })
        .finally(fin=>{
          console.log(fin);
        })
Run Code Online (Sandbox Code Playgroud)

我可以执行 get 和 post 方法,但由于此错误,不能执行 put 和 delete 方法。我设置了 …

django django-rest-framework reactjs axios

5
推荐指数
1
解决办法
8317
查看次数

Django ViewSet中detail参数的含义是什么?

我在 Django ViewSet 中创建了一个自定义操作方法,我看到了 detail 参数。如果我设置,detail=True我不能从 URL 调用这个方法,但如果我设置detail=False,我可以调用这个方法。我可以知道详细论证的含义是什么吗?

这是我的视图集 = >

class TimeSheetViewSet(viewsets.ModelViewSet): 
    queryset = TimeSheet.objects.all()
    serializer_class = TimeSheetSerializer

    @action(methods=['get'], detail=True)
    def byhello(self, request):        
        return Response({"From Hello":"Got it"})
Run Code Online (Sandbox Code Playgroud)

这是路由器和 URL 模式 =>

router.register('timesheets_ts', TimeSheetViewSet, base_name='timesheets')

urlpatterns = [   
    path('api/', include(router.urls))  
]
Run Code Online (Sandbox Code Playgroud)

django django-views django-rest-framework

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

在 react-select 中更改选定的值组件

有什么方法可以更改选定的值组件设计,在我的选项菜单中,我显示 CscId 和 CscDesc 但是当我选择该选项时,我只想显示 CscId。有什么方法可以更改选定的值组件吗?我用谷歌搜索了这个,已经花了 1 天。请帮我。

在此处输入图片说明

这是我的反应选择

import React  from "react";
import Select from 'react-select';

const costcenterselect = ({ value, onChange, id, datasource }) => {    
  const formatOptionLabel = ({ CscID, CscDesc }) => (            
    <div style={{ display: "flex"}}>
      <div style={{width:'40%'}}>{CscID}</div>                
      <div>{CscDesc}</div>                
    </div>
  );  

  return (
    <div>
      <Select 
        id={id}
        menuIsOpen={true}    
        formatOptionLabel={formatOptionLabel}
        getOptionValue={option => `${option.CscID}`}
        options={datasource}
        onChange={onChange}
        defaultValue={value}        
      />
    </div>           
  )
}

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

reactjs react-select

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

react-select中的选项框宽度大小更改

我想更改react-select选项框宽度。示例在这里=>

在此处输入图片说明

如果我的内容大于选项,则显示水平滚动但我不想要水平滚动。如何更改选项框宽度的大小?

另一件事是如何将所选值显示为 CscID 一个偶数选项框显示 CscID + CscDesc?现在,当我选择该选项时,其 CscID + CscDesc 显示在所选框中。

这是我的选择 =>

const formatOptionLabel = ({ CscID, CscDesc }) => (

            <div style={{ display: "flex"}}>
                <div>{CscID}</div>                
                <div>{CscDesc}</div>
            </div>
            );

const customStyles = {
                control: styles => ({ ...styles, }),
                option: (styles) => {

                  return {
                    ...styles,

                   width: '10000px',  //For testing                 

                  };
                },

              };

<Select 
        styles={customStyles} 

            formatOptionLabel={formatOptionLabel}
            getOptionValue={option =>
                `${option.CscID}`
              }
            options={datasource}            

        />
Run Code Online (Sandbox Code Playgroud)

css reactjs react-select

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

django apiview 中自定义方法的 URL

我是 Django 的新手,我对 Django 的自定义方法有点困惑apiview。在 ApiView 中,如何创建自定义方法以及如何从 axios 调用。

例如

这是我的观点

class TimeSheetAPIView(APIView):    

    @action(methods=['get'], detail=False)    
    def getbytsdate(self, request):
        return Response({"timesheet":"hello from getbydate"})

    def get(self,request,pk=None):
        if pk:
            timesheet=get_object_or_404(TimeSheet.objects.all(),pk=pk)
            serializer = TimeSheetSerializer(timesheet)
            return Response({serializer.data})
        timesheet=TimeSheet.objects.all()
        serializer = TimeSheetSerializer(timesheet,many=True)
        return Response({"timesheet":serializer.data})
Run Code Online (Sandbox Code Playgroud)

这是我的网址=>

    url(r'^timesheets_ts/(?P<pk>\d+)/$', TimeSheetAPIView.as_view()),
    url(r'^timesheets_ts/', TimeSheetAPIView.as_view()),
Run Code Online (Sandbox Code Playgroud)

通常我的网址会像=>

api/timesheet_ts/
Run Code Online (Sandbox Code Playgroud)

这个将得到我所有的记录。

所以我的问题是如何设置 URLgetbytsdategetbyname其他某种自定义获取方法?我该如何打电话?

我尝试这样=>

url(r'^timesheets_ts/getbytsdate/(?P<tsdate>[-\w]+)/$', TimeSheetAPIView.as_view()),
Run Code Online (Sandbox Code Playgroud)

我就这样打电话

api/timesheets_ts/getbytsdate/?tsdate='test'
Run Code Online (Sandbox Code Playgroud)

它不起作用。

那么请您解释一下apiviewurl 设置中的自定义方法吗?

django url routes

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