我是 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) 我是 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 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) 有什么方法可以更改选定的值组件设计,在我的选项菜单中,我显示 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) 我想更改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) 我是 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)
这个将得到我所有的记录。
所以我的问题是如何设置 URLgetbytsdate
或getbyname
其他某种自定义获取方法?我该如何打电话?
我尝试这样=>
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)
它不起作用。
那么请您解释一下apiview
url 设置中的自定义方法吗?
reactjs ×4
django ×3
react-select ×2
axios ×1
css ×1
django-views ×1
material-ui ×1
react-hooks ×1
routes ×1
url ×1